我使用java进行套接字编程,我使用两个动态线程集
try (ServerSocket listener = new ServerSocket(1000)) {
while (true) {
Socket socket = listener.accept();
logger.debug(socket.getRemoteSocketAddress().toString() + " Has joined :::");
new ThreadPool(socket).start();
}
}
public void run() { // this run() in ThreadPool class
while (true) {
new parserThread();//creating new thread for parsing information
}
}
但我的问题是很长一段时间,比如24小时我的应用程序卡住了,并且没有在控制台中打印任何内容。我不知道为什么它会被卡住但我对我的编码方法几乎没有怀疑。告诉我这些是否是可能性。
549790 [Thread-17569]
549791 [Thread-17570]
549792 [Thread-17571]
答案 0 :(得分:1)
您可以使用标准JRE安装中的jstack
实用程序来获取运行Java应用程序的堆栈跟踪。堆栈跟踪将告诉您应用程序的确切位置。一旦使用多个线程,就可能在某个地方出现死锁。