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();