java连接方法

标签 java multithreading join

在以下情况下,我无法理解 join 的含义:

Thread t1=new MyThread(1);
Thread t2=new MyThread(2);


t1.start();
t2.start();

t1.join();
t2.join();

问题是: 据我了解 start 调用线程的 run 方法。 所以主线程首先会遍历开始,因此所有线程都被初始化。 然后主线程转到t1.join,这意味着主线程将等到t1结束运行,然后才继续执行t2.join()。 我不明白的是 t1,t2 同时已经启动,所以它们位于 run 方法内。 因此结果应该是出乎意料的。我对吗? 那么为什么它会按顺序出现: 我有以下运行方法:

void run(){
   for(int i=0; i<4; i++){
      System.out.println(j);
   }

}

当j是MyThread构造函数中的标识符时; 输出是:

2 2 2 2 1 1 1 1

或者 1 1 1 1 2 2 2 2

最佳答案

尝试通过将迭代限制增加到 1000 来运行相同的程序:i;然后比较结果。结果出乎意料,你的理解是正确的。

关于java连接方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064714/

相关文章:

multithreading - 如何在 perl 中创建同步方法?

python - 如果它们在 Python 中不为空,则连接多个字符串

java - 如何替换 LinkedHashSet 中的特定元素?

java - Selenium 与身份验证弹出窗口交互

java - Log4 记录器滚动追加器

c++ - 如何在等待某些事件时不占用 CPU?

java - Android AAR lib - 资源链接失败

c++ - 在运行时本地启用/禁用 OpenMP

mysql - SQL - 如何连接表但保留特定属性的所有值

mysql - MySQL 中使用连接的慢查询