海南省建设注册中心网站,网站建设管理属于职业资格吗,wordpress 文章缩放,东门网站建设Java语言的JVM允许程序运行多个线程#xff0c;它通过java.lang.Thread类来体现。
Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的#xff0c;经常把run()方法的主体称为线程体#xff0c;通过该Thread对象的start()方法来启动这个线程#x…Java语言的JVM允许程序运行多个线程它通过java.lang.Thread类来体现。
Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的经常把run()方法的主体称为线程体通过该Thread对象的start()方法来启动这个线程而非直接调用run()。 JDK1.5之前创建新执行线程有两种方法 ①继承Thread类的方式 点击查看Thread类相关常用的方法 ②实现Runnable接口的方式 方式一继承Thread类
①定义子类继承Thread类。 ②子类中重写Thread类中的run方法。 ③创建Thread子类对象即创建了线程对象。 ④调用线程对象start方法启动线程调用run方法。
继承Thread的子类MyThread
public class MyThread extends Thread{Overridepublic void run() { //该方法体即为该线程要执行的程序for (int i 0;i 50;i){if (i % 2 0) System.out.println(i);}}
}创建线程对象并执行
public class TestThread {public static void main(String[] args) {//创建线程MyThread thread new MyThread();//启动该线程并执行run方法thread.start();//以下是不同于thread的线程for (int i 0; i 50; i) {if (i % 2 0) {System.out.println(i #####);}}}
}结果仅截取部分 该结果随着计算机的不同会有不同的情况不定。但要表达的意思就是多线程执行的情况下不同线程是并行的。 注意点 ①如果自己手动调用run()方法那么就只是普通方法没有启动多线程模式。 ②run()方法由JVM调用什么时候调用执行的过程控制都有操作系统的CPU调度决定。 ③启动多线程必须通过调用start()方法。 ④一个线程对象只能调用一次start()方法启动如果重复调用了则将抛出异常“IllegalThreadStateException”。 方式二实现Runnable接口
①定义子类实现Runnable接口。 ②子类中重写Runnable接口中的run方法。 ③通过Thread类含参构造器创建线程对象。 ④将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。 ⑤调用Thread类的start方法开启线程调用Runnable子类接口的run方法。
实现Runnable接口的类
public class MThread implements Runnable{Overridepublic void run() {for (int i 0; i 100; i) {if (i % 2 0){System.out.println(i);}}}
}创建对象并执行
public class TestThread {public static void main(String[] args) {MThread thread new MThread();Thread curThread new Thread(thread);curThread.start();}
}继承方式和实现方式的联系与区别
开发中优先选择:实现Runnable 接口的方式 原因①实现的方式没有类的单继承性的局限性。②实现的方式更适合来处理多个线程有共享数据的情况。
联系 public class Thread implements Runnable 相同点两种方式都需要重写run()将线程要执行的逻辑写在在run()中。