-我想使用Java中的同步技术打印下面的输出
1
1
2
2
3
3
4
4
5
5
- 我写了下面的代码,但我得到一个编译时错误,说 obj 变量没有被引用
-obj 变量在 run 方法中的同步块中
-我创建了 2 个线程 Child1 和 Child2 并在它们之间共享 obj
-如何使 obj 对同步块可见,以便获得所需的输出?
package multi_threading;
public class inter_thread {
boolean val=false;
Thread t;
public inter_thread(test_value obj,String msg){
t=new Thread(obj,msg);
t.start();
}
}
class test_value implements Runnable{
boolean val=false;
public static void main(String args[]){
test_value obj=new test_value();
inter_thread obj1=new inter_thread(obj,"Child1");
inter_thread obj2=new inter_thread(obj,"Child2");
try{
obj1.t.join();
obj2.t.join();
}catch(InterruptedException e){
System.out.println("Interrupted");
}
}
public void run(){
int i;
synchronized(obj){
for(i=1;i<=5;i++){
System.out.println(i);
obj.val=!obj.val;
while(obj.val)
try{
wait();
}catch(InterruptedException e){
System.out.println("Interrupted");
}
notify();
}
}
}
}