java - 两个线程的run方法的执行顺序是如何控制的?

标签 java multithreading

运行此代码会得到以下输出:

 Name of t1:Thread-0
  Name of t2:Thread-1
  id of t1:8
  running...
  After changing name of t1:Sonoo Jaiswal
  running...

是否应该在第一个“running...”字符串之后打印最后一个“running...”字符串? 这是代码——

class TestJoinMethod3 extends Thread{
  public void run(){
   System.out.println("running...");
  }
 public static void main(String args[]){
  TestJoinMethod3 t1=new TestJoinMethod3();
  TestJoinMethod3 t2=new TestJoinMethod3();
  System.out.println("Name of t1:"+t1.getName());
  System.out.println("Name of t2:"+t2.getName());
  System.out.println("id of t1:"+t1.getId());

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

  t1.setName("Sonoo Jaiswal");
  System.out.println("After changing name of t1:"+t1.getName());
 }
}

最佳答案

没有控制。

就是这么简单。线程首先是相互独立的。因此,无法预测事情发生的确切顺序。

如果您需要控制您的线程进行的方式,您必须研究实现这一点的方法(例如,可能是“先于发生”关系或同步点)。

关于java - 两个线程的run方法的执行顺序是如何控制的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50420746/

相关文章:

java - System.out.println 错误

java - 如何在Java中捕获鼠标光标?

multithreading - gdb如何选择 “current thread”?

java - 更快的 CPU 不会提高性能,而增加线程数会。业内最好的共享内存计算机?

java - 如何在android中根据Chapter wise阅读所有内容

java - 向我的 Web 应用程序添加两因素身份验证

java - java 中的正则表达式和 ISO-8859-1 字符集

java - 无法关闭线程池

java - 在后台运行 JAVA 中的 BASH 命令

multithreading - Delphi:系统错误1158的原因(当前进程没有更多的系统句柄)