我有几个关于他关注代码的问题:
final Runnable accept = new Runnable() {
public void run() {
while (connect == true) {
try {
sock = servsock.accept();
}
catch (Exception e) {
System.out.println(e);
}
}
}
};
new Thread(accept).start(); //creates new instance every time i want to run accept()
请注意,每次我想要运行'接受',我都会创建一个新的线程实例并启动它。谁能告诉我如何阻止其中一个线程?比如,如何识别线程?我应该使用一组线程吗?
答案 0 :(得分:1)
在ServerSocket上接受套接字的最佳方法是在1个线程中运行accept循环,然后将新生成/接受的套接字传递给另一个线程。
如何阻止你的线程?最简单,最好的方法是关闭他们正在收听的套接字。
答案 1 :(得分:1)
您使用的是JDK 7吗?这种方法怎么样?
ExecutorService tPool = Executors.newFixedThreadPool(5);
InterruptableTask task = new InterruptableTask();
Map<Integer, InterruptableTask> tasks = new HashMap<Integer, InterruptableTask>();
tasks.put(0, task);
Future future = tPool.submit(task);
// something is executed here...
InterruptableTask it = tasks.get(0);
it.suspend();
答案 2 :(得分:0)
如果你正在尝试维护一个线程池,请查看java.util.concurrent.ExecutorService和java.util.concurrent.Executors,web上有很多使用它们的例子。