final Thread t1 = new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName() + " run 1");
}
}, "T1");
final Thread t2 = new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName() + " run 2");
// try {
// t1.join(10);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
}, "T2");
final Thread t3 = new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName() + " run 3");
// try {
// t2.join(10);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
}, "T3");
t1.start();
t2.start();
t3.start();
运行后可以看出线程执行的顺序是无序的,不管有没有jion,线程所显示的顺序其实是他们抢占执行时间块的结果,先抢先得,但是若在线程执行的时候添加线程池的话,那么线程就能够有序的执行。例如:
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(t1);
executor.submit(t2);
executor.submit(t3);
executor.shutdown();
本文探讨了Java中线程的无序执行特性,并通过引入线程池实现了线程的有序调度。展示了如何使用ExecutorService创建单一线程执行器,并通过submit方法提交线程任务,最后调用shutdown方法来关闭执行器。
120

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



