控制线程的不同实例

时间:2014-09-04 14:40:08

标签: java multithreading anonymous

我有几个关于他关注代码的问题:

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()

请注意,每次我想要运行'接受',我都会创建一个新的线程实例并启动它。谁能告诉我如何阻止其中一个线程?比如,如何识别线程?我应该使用一组线程吗?

3 个答案:

答案 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上有很多使用它们的例子。