线程start()和Runnable run()之间有什么区别

假设我们有两个Runnable:

类R1实现可运行{
公共无效运行(){…}

}
类R2实现可运行的{
公共无效运行(){…}

}

那么这两者的区别是什么:

公共静态void main(){
R1=新的R1();
R2=新的R2();
r1.run();
r2.run();
}

这是:

公共静态void main(){
R1=新的R1();
R2=新的R2();
螺纹t1=新螺纹(r1);
螺纹t2=新螺纹(r2);
t1.start();
t2.start();
}

第一个示例:没有多线程。两者都在单个(现有)线程中执行。没有线程创建

r1r1=新R1();
R2=新的R2();

r1r2只是类的两个不同对象,它们实现了Runnable接口,从而实现了run()方法。当您调用r1.run()时,您正在当前线程中执行它

第二个示例:两个单独的线程

线程t1=新线程(r1);
螺纹t2=新螺纹(r2);

t1t2是类线程的对象。当您调用t1.start()时,它会启动一个新线程,并在内部调用r1run()方法,在该新线程中执行它

发表评论