为什么啊,按道理两个线程变量间应该不存在关系,同时实例化2个也应该是各运行各的,退一步说,如果两个线程变量指向同一个实例,也不能结束标志都出来了,还能接着运行吧。
如果不在上一个线程休眠时实例化下一个线程,就不会出现上述问题
要定位你需要的问题,建议你在打印中增加对对象this指针地址的打印,来区分这些打印来自哪个线程,因为你现在相当于多线程向同一个stdout打印。
try
system.out.println("结束"+this);
从现象上看,你代码中的r对象是被反复使用的
如果你的意图是每次都从零开始,就每次重新对象,例如:
new Thread(new Runing()).start()
System.out.println("j : "+(j++)+this); 加了这一句
上一个图发错了
之所以出现你这情况是因为多线程并发的原因
r.out=true
new Thread(r).start();
这个新线程获取到CPU资源就开始执行了,由于out是true 所以就直接退出循环结束了(所以打印出结束),并将out=false(所以之前线程不满足退出条件会继续执行);
这也就会你所说的出现接下去的情况~
设置为static volatile的