运行此代码会提供以下输出:
Name of t1:Thread-0
Name of t2:Thread-1
id of t1:8
running...
After changing name of t1:Sonoo Jaiswal
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());
}
}
答案 0 :(得分:1)
没有控件。
就这么简单。线程首先是彼此独立的。因此,无法预测事情发生的确切顺序。
如果你需要控制你的线程进展的方式,你必须研究如何实现这一点(可能是"发生在"关系或同步之前)例如)。
答案 1 :(得分:0)
在第一次“运行...”字符串之后,是否应该打印最后一个“正在运行的...”字符串?这是代码 -
不一定。线程在后台独立运行,很难预测它们何时运行以及它们之间的时间间隔。如果您多次运行程序,您应该看到不同版本的输出。
线程的重点是这种异步操作。如果一个线程在一些IO上阻塞,那么其他线程可以在后台运行处理其他信息。这就是多线程程序的强大功能。如果你想控制它们以便它们以某种顺序吐出消息,那么你也可以在同一个线程中运行。