java如何保证先启动的线程先执行某段代码
解决方法:
使用jdk并发包中的Semaphore的公平信号
1.业务代码:http://www.yayihouse.com/yayishuwu/chapter/2110
2.线程
public class YourThread extends Thread {
private YourService yourService;
public YourThread(YourService yourService) {
super();
this.yourService = yourService;
}
@Override
public void run() {
System.out.println(this.getName()+ "现在启动了!");
yourService.getName();
}
}
3.测试类
public static void main(String[] args) {
YourService service = new YourService();
YourThread[] threads = new YourThread[3];
for (int i = 0; i < 3; i++) {
threads[i] = new YourThread(service);
threads[i].start();
}
}
4.结果,先启动的线程先执行getName方法
ThreadName-0现在启动了!
ThreadName-2现在启动了!
ThreadName-1现在启动了!
线程名称:ThreadName-0
线程名称:ThreadName-2
线程名称:ThreadName-1
本文介绍了一种在Java中确保线程按启动顺序公平执行的方法,利用Semaphore的公平信号特性,通过实例演示了如何使线程按启动顺序依次执行特定代码。

1960

被折叠的 条评论
为什么被折叠?



