本帖最后由 Neverbelazy 于 2013-5-29 16:58 编辑
breeze 发表于 2013-5-29 16:22
这样岂不是容易造成死锁, 获取的 ticket是在线程内部的run方法定义的, 它怎么会改变呢 ...
1. ticket是你用sealWindow.sealTicket得到的 除了这一步是同步外, 其他部分都没有同步
2. 你指的死锁应该是 嵌套了 synchronized(){ sealTicket()} 但是, 如果 synchronized(){}这个整体就不用再 将 sealTicket 标记为synchronized了
3. 另外,
while(true){
//我的经验是,这行最好加一句Thread.sleep(xxx); 否则一个线程抢到执行权不放, 自己无限循环
synchromized(xxx){
// 同步代码
}
}
|