应用程序用 Thread 子类实现多线程
作者:互联网
import java.util.Date; public class TT{ static Athread threadA; //声明静态对象 static Bthread threadB; public static void main(String args[]){ Athread threadA = new Athread(); //创建对象 threadB = new Bthread(); threadA.start(); threadB.start(); } } class Athread extends Thread{ public void run(){ Date timeNow;//为了能输出当时的时间 for(int i=0;i<=5;i++) { timeNow = new Date();//得到当前时间 System.out.println("我是 threadA:" +timeNow.toString()); try{sleep(2000);} catch(InterruptedException e){} } } } class Bthread extends Thread { public void run() { Date timeNow;//为了能输出当时的时间 { for (int i = 0; i <= 5; i++) { timeNow = new Date();//得到当前时间 System.out.println("我是 threadB:" + timeNow.toString()); try { sleep(1000); } catch (InterruptedException e) { } } } } }}
在 main()方法中创建了两个线程 threadA 和 threadB,它们分别是Thread 子类 Athread 和 Bthread 的实例,并分别调用它们的 start()方法启动它们。
threadA 先调用 start()方法,类 Athread 中的 run()方法将自动执行。由于 threadA 线程先执行,它的 run()方法输出“我是 ThreadA”和当时的时间后,threadA 线程主动休息 2000 毫秒,让出 CPU。这时正在等待 CPU 的 threadB 线程获得 CPU 资源,执行它的run()方法,输出“我是 threadB”和当时的时间,threadB 线程主动让出 CPU,1000 毫秒后又来排队等待 CPU 资源。过了 1000 毫秒后,这时 threadA 线程还没有“醒来”,因此又轮到 threadB 执行。再次输出“我是 threadB”。然后又休息,这时threadA好了,执行。然后又B,休息1000ms,又B ......
B执行完6次后就一直A执行
注意i=0;i<=5;i++这个循环是执行6轮
结果
我是 threadB:Tue Jun 09 20:37:00 CST 2020
我是 threadA:Tue Jun 09 20:37:01 CST 2020
我是 threadB:Tue Jun 09 20:37:01 CST 2020
我是 threadB:Tue Jun 09 20:37:02 CST 2020
我是 threadA:Tue Jun 09 20:37:03 CST 2020
我是 threadA:Tue Jun 09 20:37:05 CST 2020
我是 threadA:Tue Jun 09 20:37:07 CST 2020
标签:Thread,threadA,子类,09,Jun,2020,CST,多线程,threadB 来源: https://www.cnblogs.com/lhywxhn/p/13080614.html