class z {
public static void main(String[] args){
new z();
}
z(){
z alias = this;
z alias2 = this;
synchronized(alias){
try{
alias2.wait();
System.out.println("done waiting");
}
catch(InterruptedException e){
System.out.println("interrupted");
}
catch(Exception e){
System.out.println("other exception");
}
finally{
System.out.println("finally");
}
}
System.out.println("all done");
}
}
这下面的句子不是很好理解
z alias = this;
z alias2 = this;//这里的alias与alias2都是指向当前的对象吗?alias==alias2?
synchronized(alias){
try{
alias2.wait(); //alias2又不是线程怎么可以用wait();
//我知道wait();是在object 类里的,我是说alias2不是线程呀!!!
System.out.println("done waiting");
}
谁可以帮我分析一下吗?
谢谢啦!!!!!
public static void main(String[] args){
new z();
}
z(){
z alias = this;
z alias2 = this;
synchronized(alias){
try{
alias2.wait();
System.out.println("done waiting");
}
catch(InterruptedException e){
System.out.println("interrupted");
}
catch(Exception e){
System.out.println("other exception");
}
finally{
System.out.println("finally");
}
}
System.out.println("all done");
}
}
这下面的句子不是很好理解
z alias = this;
z alias2 = this;//这里的alias与alias2都是指向当前的对象吗?alias==alias2?
synchronized(alias){
try{
alias2.wait(); //alias2又不是线程怎么可以用wait();
//我知道wait();是在object 类里的,我是说alias2不是线程呀!!!
System.out.println("done waiting");
}
谁可以帮我分析一下吗?
谢谢啦!!!!!
2、所有的类都直接或间接的继承object类
z alias = this;
z alias2 = this;//这里的alias与alias2都是指向当前的对象吗?alias==alias2?
------------------------------------------------------------------------------
对,alias==alias2 ,alias和alias2指向同一个对象.
synchronized(alias){
try{
alias2.wait(); //alias2又不是线程怎么可以用wait();
//我知道wait();是在object 类里的,我是说alias2不是线程呀!!!
System.out.println("done waiting");
}
-----------------------------------------------------------------------------------
alias2确实不是线程,要表达的确切意思是当前线程wait在alias这个资源这里.
至于为什么能够在alias对象的同步块中调用alias2.wait();, 就是因为上面提到的alias和alias2指向同一个对象,所以使用同一把锁.
sorry, 是"wait在alias2这个资源这里." , 笔误
z alias2 = this;
synchronized(alias){
try{
alias2.wait();
System.out.println("done waiting");
}我觉得这个程序一执行就会死掉,