在JAVA中,有2种形式可以实现自己的多线程程序,第一种是继承,第二种是实现接口里的方法。
因为在JAVA中不许多重继承,所以大多数我们选择第二种实现接口来实现自己的多线程程序。
第一种:
启动这个线程:
第二种:
启动这个线程:
从这里可以看到,创建多线程的这2种方法都差不多,都要实现RUN方法,唯一比较大的区别就是在实例化这个地方,需要注意。当start()方法开始执行,那么我们实现的RUN方法也就开始被执行了,RUN方法执行完后,这个线程也就结束了自己的生命周期。如果我们想此线程不退出,那么我们只要保证这个线程不结束就可以了。通常加一个死循环,如:
这样做,当此线程有事情要做时,CPU会分配时间片,如果不执行,那么CPU将把时间片交给其它的程序,而此线程一直处于休眠状态,直到在次被CPU唤醒。而此线程一直存在。
因为在JAVA中不许多重继承,所以大多数我们选择第二种实现接口来实现自己的多线程程序。
第一种:
public class Thread1 extends Thread {
public void run(){
//这里实现自己的逻辑代码;
}
}
启动这个线程:
Thread1 t=new Thread1();//new出Thread1对象实例
t.start();//启动
第二种:
public class Thread2 implements Runnable {
public void run(){
//这里实现自己的逻辑代码;
}
}
启动这个线程:
Thread t2=new Thread(new Thread2());//new出Thread1对象实例
t.start();//启动
从这里可以看到,创建多线程的这2种方法都差不多,都要实现RUN方法,唯一比较大的区别就是在实例化这个地方,需要注意。当start()方法开始执行,那么我们实现的RUN方法也就开始被执行了,RUN方法执行完后,这个线程也就结束了自己的生命周期。如果我们想此线程不退出,那么我们只要保证这个线程不结束就可以了。通常加一个死循环,如:
public void run(){
while(true){
//逻辑代码
}
}
这样做,当此线程有事情要做时,CPU会分配时间片,如果不执行,那么CPU将把时间片交给其它的程序,而此线程一直处于休眠状态,直到在次被CPU唤醒。而此线程一直存在。