を開始していない私は、スレッドThreadPoolExecutorおよびSocket。スレッドが
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));
}
}
のプール付き
public class MainThread extends Thread
{
private final Socket s;
public MainThread(final Socket s)
{
this.s = s;
}
public void start()
{ // some logic
}
}
とクラスメインスレッドを持つクラスクラスを持っているMainThreadが作成されますが開始されません。それは「待っている」。
問題は何ですか?作成後にこのスレッドをどのように開始しますか?
私は
public MainThread(final Socket s)
{
this.s = s;
start();
}
ようMainThreadのコンストラクタを作るならば、すべてが正常に動作します。しかしそれは間違っている
...または常にstartの代わりにrunをオーバーライドします。 – aioobe
ええ、Runnableを使用している場合、 '@ Override'を開始しようとするとコンパイルエラーになります... – artbristol
...または常にRunnableを使用します;-) – dty