如何实现线程的顺序执行,如何让多线程按顺序执行
下面java入门程序专栏介绍如何在java中让线程顺序执行,希望对你有帮助!
我们需要完成这样一个应用场景:
1.早上;2.测试人员、产品经理、开发人员陆续来公司上班;3.产品经理计划新的需求;4.开发者开发新的需求函数;5.测试人员测试新功能。
规划需求、开发新功能的需求和测试新功能是有序的。我们把thread1当做产品经理,thread2当做开发人员,thread3当做测试人员。
使用线程的 join 方法
Join():是Theard的方法,作用是调用线程需要等待join()线程的执行,才能继续运行。
应用场景:当一个线程必须等待另一个线程完成执行时,可以使用join方法。
例子如下:
包com . zhangsf . Java base . thread . order;
/**
* @作者zhangsf
*线程通过子程序join按顺序执行。
*/
公共类ThreadJoinDemo {
公共静态void main(String[] args) {
最终线程thread1=新线程(new Runnable() {
@覆盖
公共无效运行(){
System.out.println(产品经理规划新需求);
}
});
最终线程thread2=新线程(new Runnable() {
@覆盖
公共无效运行(){
尝试{
thread 1 . join();
System.out.println(开发者开发新需求);
} catch (InterruptedException e) {
e . printstacktrace();
}
}
});
Thread thread3=新线程(new Runnable() {
@覆盖
公共无效运行(){
尝试{
thread 2 . join();
System.out.println(测试人员测试新特性);
} catch (InterruptedException e) {
e . printstacktrace();
}
}
});
system . out . println( morning:);
System.out.println(测试人员来工作了.);
thread 3 . start();
System.out.println(产品经理来上班了.);
thread 1 . start();
System.out.println(开发人员来工作了.);
thread 2 . start();
}
}运行结果:
如何解决写爬虫IP受阻的问题?立即使用。
使用主线程的 join 方法
这里,join()在主线程中用于阻塞线程。
包com . zhangsf . Java base . thread . order;
/**
* @作者zhangsf
*线程通过主程序join按顺序执行。
*/
公共类ThreadMainJoinDemo {
公共静态void main(String[] args)引发异常{
最终线程thread1=新线程(new Runnable() {
@覆盖
公共无效运行(){
System.out.println(产品经理正在计划新的需求.);
}
});
最终线程thread2=新线程(new Runnable() {
@覆盖
公共无效运行(){
System.out.println(开发者开发新需求);
}
});
最终线程thread3=新线程(new Runnable() {zzzz
@覆盖
公共无效运行(){
System.out.println(测试人员测试新特性);
}
});
system . out . println( morning:);
System.out.println(产品经理来上班);
System.out.println(测试人员来上班);
System.out.println(开发人员来上班);
thread 1 . start();
//父进程调用子进程的join()方法后,父进程需要等待子进程运行完毕后再继续。
System.out.println(开发人员和测试人员休息一下.);
thread 1 . join();
System.out.println(产品经理的新需求规划完成!);
thread 2 . start();
System.out.println(测试人员将休息.);
thread 2 . join();
thread 3 . start();
}
}运行结果:
让线程顺序执行的方法有很多,以后会一一介绍。这就是在java中如何让线程顺序执行的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。