Java 多线程(三)—— 线程的生命周期及方法
程序员文章站
2024-02-03 11:08:46
这篇博客介绍线程的生命周期。 线程是一个动态执行的过程,它也有从创建到死亡的过程。 线程的几种状态 在 Thread 类中,有一个枚举内部类: 上面的信息以图片表示如下: 第一张图: 第二张图:把等待、计时等待、阻塞看成阻塞一个状态了 1、新建状态(new):使用 new 创建一个线程,仅仅只是在堆 ......
sleep() 和 yield() 方法的区别:
①、都能使当前处于运行状态的线程放弃 cpu资源,把运行的机会给其他线程
②、sleep 方法会给其他线程运行的机会,但是不考虑其他线程优先级的问题;yield 方法会优先给更高优先级的线程运行机会
③、调用 sleep 方法后,线程进入计时等待状态,调用 yield 方法后,线程进入就绪状态。
join示例:
public class testthread1 { public static void main(string [] args){ subthread1 subthread1=new subthread1(); subthread1.start(); for (int i=0;i<=100;i++){ system.out.println(thread.currentthread().getname()+":"+i); if(i==20){ try { subthread1.join(); } catch (interruptedexception e) { e.printstacktrace(); } } } } } class subthread1 extends thread{ @override public void run(){ for (int i=0;i<=100;i++){ try { thread.currentthread().sleep(100); } catch (interruptedexception e) { e.printstacktrace(); } system.out.println(thread.currentthread().getname()+":"+i); } } }
运行结果:
main:0 main:1 main:2 main:3 main:4 main:5 main:6 main:7 main:8 main:9 main:10 thread-0:0 thread-0:1 thread-0:2 thread-0:3 thread-0:4 thread-0:5 thread-0:6 thread-0:7 thread-0:8 thread-0:9 thread-0:10 . . . thread-0:99 thread-0:100 main:11 main:12 main:13 main:14 main:15 . . main:98 main:99 main:100
运行结果分析:在main线程中调用线程a的join()方法,此时main线程停止执行,直至a线程执行完毕,main线程再接着join()之后的代码执行
下一篇: 栈与队列链式存储结构一货物上架问题