@Override
protected void clientClosed(RMIConnection conn) throws IOException {
System.out.println("clientClosed, will call connectorServer.stop");
final Exchanger<Void> x = new Exchanger<Void>();
Thread t = new Thread() {
public void run() {
try {
connectorServer.stop();
} catch (Exception e) {
fail(e);
}
}
};
t.setName("connectorServer.stop");
t.start();
waitForBlock(t);
/* If this thread is synchronized on RMIServerImpl, then
* the thread that does connectorServer.stop will acquire
* the clientList lock and then block waiting for the RMIServerImpl
* lock. Our call to super.clientClosed will then deadlock because
* it needs to acquire the clientList lock.
*/
System.out.println("calling super.clientClosed");
System.out.flush();
super.clientClosed(conn);
}
ConnectorStopDeadlockTest.java 文件源码
java
阅读 19
收藏 0
点赞 0
评论 0
项目:openjdk-jdk10
作者:
评论列表
文章目录