java 启动线程的两种方式

来源:互联网 发布:克里诺林裙淘宝店铺 编辑:程序博客网 时间:2024/05/20 17:24

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


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 0
原创粉丝点击