在Java中实现多个线程

时间:2011-04-30 01:20:15

标签: java multithreading

我是Java的新手,我每次用户按下按钮时都需要创建一个新线程。我曾经使用MVC和Swing,但我正在尝试找到一种方法来创建用户需要的许多线程。我查看了一些信息,并尝试使用arrayList来收集所有线程。但是我遇到了一些问题:

private ThreadLibrary thread_lib = new ThreadLibrary(); 

    public TestArray(int val) {
        for (int i=0; i < val; i++) {           
            thread_lib.addThread(    new Thread(new runThread()).start()   );       
        }
    }

由于 new 运算符不返回任何内容,因此不会向arrayList添加任何内容。是否有任何想法或更好的数据结构? 感谢

3 个答案:

答案 0 :(得分:1)

此,

thread_lib.addThread(    new Thread(new runThread()).start()   )

应该是,

Thread t =  new Thread(new runThread());
thread_lib.addThread(t);
t.start();

不要这样做,请查看ThreadPoolExecutor

答案 1 :(得分:1)

new肯定会返回您正在构建的内容。这是返回start的{​​{1}}方法。尝试将线程对象存储在变量中并单独将其踢掉。

void

答案 2 :(得分:0)

new确实会返回Thread;它是对start()的调用返回void。您只需两步即可完成此操作:

Thread t = new Thread(new runThread());
t.start();
thread_lib.addThread(t);

现在,无论你是否真的需要将它们放入数组中都是值得怀疑的;在线程运行后,你可以对线程做太多的事情。