![]() |
2
2
是的,您拥有的synchronized语句将按您的预期工作。我只添加一条注释,您接受套接字连接的线程将阻塞注册表.put(id,serverThread);当您在另一个线程的synchronized部分时。这意味着您的服务器在处理通知时不会处理任何新的传入请求。。。。。 您可能需要考虑移动put语句(当然要将serverThread改为this) 到ServerThread的run方法的第一行。这样,如果callSomePublicMethodOnThread结束了长时间的处理,您就不会阻止传入连接。 |
![]() |
3
1
为了使一切更容易,我将使用ConcurrentHashMap(http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html)所以您不需要在循环中使用sync块,因为concurrentHashMap使用不同类型的迭代器(不是fail fast迭代器),它不会引发concurrentModificationException,你也会有更好的表现。 |
![]() |
4
0
代码中有一个问题,不能将方法定义为“private void notify()”,因为“notify()”是在对象类中定义的方法 |
![]() |
a a · 为什么在这个可重入锁示例中需要引用计数? 2 年前 |
![]() |
Grant · goroutines有高空闲唤醒电话 2 年前 |
![]() |
hoaz · 如何安全地清理并发映射 6 年前 |
![]() |
Alanpatchi · int基元类型的volatile声明 6 年前 |