Ich habe eine Klasse-Klasse mit HauptthreadThreadPoolExecutor und Socket. Thema ist nicht gestartet
public class MainThread extends Thread
{
private final Socket s;
public MainThread(final Socket s)
{
this.s = s;
}
public void start()
{ // some logic
}
}
und Klasse mit Pool von Threads
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 erstellt, aber nicht gestartet. Es ist "warten".
Was ist das Problem? Wie starte ich diesen Thread nach der Erstellung?
wenn ich machen Konstruktor Mainthread wie
public MainThread(final Socket s)
{
this.s = s;
start();
}
dann in der Regel alles funktioniert. Aber es ist falsch
... oder überschreiben Sie immer run statt start. – aioobe
Ja, aber wenn Sie Runnable verwenden, führt der Start von '@ Override 'zu einem Kompilierungsfehler ... – artbristol
... oder verwenden Sie immer' Runnable' ;-) – dty