java 启动线程的两种方式

超、凢脫俗 2022-08-20 11:22 258阅读 0赞

启动线程肯定要用start()方法。当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。当cpu分配给它时间时,才开始执行run()方法(如果有的话)。START()是方法,它调用RUN()方法.而RUN()方法是你必须重写的. run()方法中包含的是线程的主体。

640_wx_fmt_jpeg_wxfrom_5_wx_lazy_1
java启动线程一般有两种方式:

1继承Thread类

public class TestThread1 {

public static void main(String args[]) {

Runner1 r = new Runner1();

r.start();

for(int i=0; i<100; i++) {

System.out.println(“Main Thread:———“ + i);

}

}

}

class Runner1 extends Thread {

public void run() {

for(int i=0; i<100; i++) {

System.out.println(“Runner1 :” + i);

}

}

}

2实现Runnable接口

public class TestThread1 {

public static void main(String args[]) {

Runner1 r = new Runner1();

Thread t = new Thread(r);

t.start();

for(int i=0; i<100; i++) {

System.out.println(“Main Thread:———“ + i);

}

}

}

class Runner1 implements Runnable {

public void run() {

for(int i=0; i<100; i++) {

System.out.println(“Runner1 :” + i);

}

}

}

结论

当我们采用实现Runnable接口的方式来实现线程的情况下,在调用new Thread(Runnable target)构造器时,将实现Runnable接口的类的实例设置成了线程要执行的主体所属的目标对象target,当线程启动(start)时,这个实例的 run()方法就被执行了。当我们采用继承Thread的方式实现线程时,线程的这个run()方法被重写了,所以当线程启动时,执行的是这个对象自身的 run()方法。总结起来就一句话,如果我们采用的是继承Thread类的方式,那么这个target就是线程对象自身,如果我们采用的是实现Runnable接口的方式,那么这个target就是实现了Runnable接口的类的实例。

如果直接用Run方法,这只是调用一个方法而已,程序中依然只有主线程—这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。

发表评论

表情:
评论列表 (有 0 条评论,258人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java创建线方式

    线程的创建有两种方式,昨天学习过其中的一种: 创建一个类,继承自Java里的[Thread类][Thread],并重写run方法。 最后再创建自定义线程的对象,并调用sta

    相关 java 启动线方式

    启动线程肯定要用start()方法。当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着