我是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添加任何内容。是否有任何想法或更好的数据结构? 感谢
答案 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);
现在,无论你是否真的需要将它们放入数组中都是值得怀疑的;在线程运行后,你可以对线程做太多的事情。