![]() |
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()”是在对象类中定义的方法 |
![]() |
user107586 · 如何处理等待句柄不会导致无限循环? 9 月前 |
![]() |
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 9 月前 |
![]() |
BenjiFB · C#内存缓存:在一次操作中追加到列表? 9 月前 |
![]() |
András Takács · Python多线程问题 1 年前 |
|
András Takács · Python多线程错误 1 年前 |