有没有办法创建多个与for循环同时运行的线程?考虑以下示例:
for(int i = 1; i<=36; i++) {
if(new Random().nextInt(2)==0){
ActionThread nr = new ActionThread();
}
}
我不想在if语句完成后杀死线程。每个线程的结尾在ActionThread类本身中是随机确定的。另外,如何自动命名线程?例如,代替nr,第一个线程应命名为nr1,第二个nr2,第三个nr3,依此类推。
我假设这ActionThread
是您创建的一些自定义类,它可以扩展Thread
。
我不想在if语句完成后杀死线程。
他们不会。但是,您似乎还没有启动它们。阅读的javadocs Thread
。阅读顶部的材料,然后查看start()
和run()
方法。
如果您不启动线程,那么什么也不会发生。
另外,如果希望应用程序的其他部分能够在创建线程后对线程执行“操作”,则应将nr
本地变量替换为应用程序其余部分可以使用的数据结构;例如列表或数组。
(也可以通过ThreadGroup
树找到现存的线程,但这很复杂。)
另外,如何自动命名线程?
调用Thread.setName()
,或将线程名称传递给(相关的)Thread
构造函数。例如:
nr.setName("thr" + i);
或者甚至可以ActionThread
在构造函数中将自己的设置设为自己的名称。
我还应该指出,创建的子类通常被认为是一个坏主意Thread
。最好将线程逻辑放入自定义Runnable
类中,然后创建Runnable
实例并将其作为Thread
构造参数传递。像这样:
public class MyRunnable implements Runnable {
@Override
public void run() {
// thread logic goes here
}
}
Thread th = new Thread(new MyRunnable());
th.start();
如果要将参数传递给线程逻辑,请向可运行类中添加一些参数的构造函数,并在实例化可运行时提供它们。
为什么要这样呢?因为它使您可以轻松地将代码更改为使用线程循环或执行程序等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句