我有一个通过调用
启动新线程的类public void omnom(){
t = new Thread(this, "My Thread");
t.start();
}
然后新线程在run()
方法内运行。所以我有两个线程工作正常,但我如何添加第三个?我想“拆分”2个帖子,例如t.start();
+ f.start();
我如何从omnom()
拆分它们并将它们发送给2个不同的“run()
”方法
谢谢!
答案 0 :(得分:4)
您可以创建一个匿名Runnable
类来调用您喜欢的任何“运行”方法:
public void omnom() {
new Thread(this, "My Thread").start();
new Thread(
new Runnable() {
public void run() {
otherRunMethod();
}
}
).start();
}
答案 1 :(得分:1)
当您创建线程时,您将传递Runnable
的实例作为第一个参数 - 以及该线程调用的此runnable的run()
方法。
因此,在您的特定情况下,您正在传入this
- 可能是您从实现Runnable调用的类,并且有一个run()方法,这就是为什么该方法被线程{{1}调用的原因}}。要让另一个线程t
调用另一个方法,您只需要将不同的Runnable实例传递给具有不同f
方法的线程构造函数,如下所示:
run()
答案 2 :(得分:0)
只需重复new Thread()
和start()
。
您必须区分编译时结构和运行时结构。您可以根据需要使用相同的类字节代码来创建尽可能多的线程,并且他们将很乐意执行该类的任何部分以便执行其私有执行流 - 即使它是当前由另一个线程执行的相同代码行!
(事实上,这就是并发编程如此复杂的原因,以及为什么甚至需要同步:因为字节码不是由特定线程拥有,而是由类加载器拥有。)