可运行的 run() 与 Thread start()
问题:
并发Java 编程中,Runnable 接口定义了一个 run() 方法,该方法是任务的入口点。类似地,Thread 类有一个 start() 方法,用于启动一个新的执行线程。这两种方法的主要区别是什么?
答案:
根本的区别在于线程的创建和执行:
Runnable run (): 不创建线程
Thread start(): Thread创建
示例:
考虑两个类,R1 和 R2,实现 Runnable 接口:
class R1 implements Runnable { public void run() { ... } } class R2 implements Runnable { public void run() { ... } }
在下面代码片段,r1.run()和r2.run()是直接调用的,这意味着没有新的线程创建:
public static void main() { R1 r1 = new R1(); R2 r2 = new R2(); r1.run(); r2.run(); }
相反,以下代码创建两个新线程 t1 和 t2,并启动它们:
public static void main() { R1 r1 = new R1(); R2 r2 = new R2(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); }
在此代码中,与 r1 和 r2 关联的任务将在新创建的线程中并发执行。
以上是可运行的 run() 与线程 start():主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!