Java 使用Join方法的不同输出
我读了一些教程,甚至已经问了一些问题 但我又对join方法感到困惑。 据我所知,Java无法保证在正常情况下线程的执行顺序 我使用join()阅读的内容是,它确保只要一个线程调用join,当前线程就不会执行,除非调用join的线程完成 我试过的例子Java 使用Join方法的不同输出,java,multithreading,join,Java,Multithreading,Join,我读了一些教程,甚至已经问了一些问题 但我又对join方法感到困惑。 据我所知,Java无法保证在正常情况下线程的执行顺序 我使用join()阅读的内容是,它确保只要一个线程调用join,当前线程就不会执行,除非调用join的线程完成 我试过的例子 公共类ThreadTest1扩展线程{ @凌驾 公开募捐{ super.run(); 对于(int i=0;i这里的问题是两个线程独立启动并开始打印内容,在th0.start和th1.start之间发生的事情是不确定的 另外,应用程序的主系统线程正在
公共类ThreadTest1扩展线程{
@凌驾
公开募捐{
super.run();
对于(int i=0;i这里的问题是两个线程独立启动并开始打印内容,在th0.start
和th1.start
之间发生的事情是不确定的
另外,应用程序的主系统线程正在等待th1
完成,th0
和th1
彼此独立地执行它们的run
方法,这就是为什么每次都会得到不同的序列。您可以尝试使用下面的
try {
th1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
实际上,通过使用join(10000)方法,我们说的是等待其他线程的atmost 10000ms…如果其他线程没有在10000ms内完成,则当前线程的执行开始
join()的使用并没有指定它等待其他线程完成执行的时间…即th2.start();
应该是th1.start();
,对吗?对于th/th0也是这样。