运行此代码会得到以下输出:
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/