gpt4 book ai didi

java - Java中线程的问题

转载 作者:行者123 更新时间:2023-12-01 23:01:53 26 4
gpt4 key购买 nike

我正在开发一个用 JAVA 24x7 不间断地抓取整个网络的爬虫。

为了提高爬取速度,我在里面实现了线程。但这是我无法理解的事情。

考虑以下代码:

       for(int i=0; i<no_of_threads; i++){
new Thread("" + i){
public void run()
{
try
{
System.out.println("Instance: " + getName() + " running");
getSeed();
Thread.sleep(1000);

}
catch (Exception e)
{
e.printStackTrace();
System.out.println("Thread could not start: "+getName());
}
}
}.start();
}

首先,程序显示以下输出:

Instance: 5 running 
Instance: 6 running Instance: 4 running Instance: 3 running Instance: 2 running Instance: 1 running
Instance: 7 running Instance: 0 running
Instance: 8 running
Instance: 9 running

此后,开始正常执行,程序持续运行一段时间。突然,我明白了:

Thread could not start: 6

并且程序会持续一段时间。然后,

Thread could not start: 9

突然间所有线程都停止了。

仅当线程启动时处理异常时,才会给出消息“线程无法启动”。但由于它已经显示“Instance Running”,这意味着线程已经在运行。

我无法理解为什么以及如何发生这种情况。

最佳答案

您自己的消息“线程无法启动”不正确。线程已经启动,但您刚刚在Thread 本身内捕获了某种Exception。您正在打印异常的堆栈跟踪,但没有将其包含在此处。检查堆栈跟踪以确定真正的问题是什么。这并不是线程没有启动;而是线程没有启动。线程中还有其他一些问题。

关于java - Java中线程的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23298979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com