Java :能否举一个并发的情形,使用 synchronized 根本实现不了或很复杂,必须用 wait/notify ?

2020-03-31 19:17:46 +08:00
 Newyorkcity
我知道 synchrnoinzed 无法控制线程阻塞时间,想让线程阻塞 10s 后咱不干了抛个异常走人是做不到的。除此之外呢?

那如果现在我改了 JVM 源码,做到了可以这样

public synchronized(1000) void synMethod(){..}

来表示并实现了 『尝试执行此同步方法,阻塞最大允许时间为 1000ms,超过就抛异常然后本线程走人不干了』的功能的话,

还有情形用 wait/notify 很简单优美但用 synchrnozied 很烦躁吗?

谢谢解答
947 次点击
所在节点    问与答
3 条回复
m30102
2020-03-31 22:26:41 +08:00
```
synchronized(obj) {
try{
future.get(1000 * 10, TimeUnit.MILLISECONDS);
}catch(){
}

}
```
Jacky23333
2020-03-31 22:33:26 +08:00
既然想要等待可中断,为什么不选择 lock 呢
momocraft
2020-03-31 22:37:29 +08:00
CountdownLatch

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/658061

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX