gpt4 book ai didi

java - ThreadPoolExecutor 和 Socket。线程未启动

转载 作者:行者123 更新时间:2023-12-01 16:35:15 33 4
gpt4 key购买 nike

我有一个带有主线程的类

public class MainThread extends Thread
{
private final Socket s;

public MainThread(final Socket s)
{
this.s = s;
}

public void start()
{ // some logic
}
}

以及带有线程池的类

public final class MainListener extends Thread
{

private Socket ss;

public MainListener(final int socket)
{
this.socket = socket;
this.pool = new ThreadPoolExecutor(
2,
4,
1000L,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}

public void start()
{
final ServerSocket ss = new ServerSocket(socket);
while(true)
{
final Socket s = ss.accept();
pool.execute(new MainThread(s));
}
}

主线程已创建但未启动。正在“等待”。
问题是什么?创建后如何启动该线程?
如果我像

这样创建 MainThread 的构造函数
public MainThread(final Socket s)
{
this.s = s;
start();
}

然后就一切正常了。但这是错误的

最佳答案

您已覆盖 start 而不是 run。为了避免再次犯此错误,请始终使用 Runnable

关于java - ThreadPoolExecutor 和 Socket。线程未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9872222/

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