一、Runnable介绍
Java中实现多线程有两种方式:继承Thread类或者实现Runnable接口。Runnable接口是一种更轻量级、更灵活的实现多线程的方式,更加符合“面向接口编程”的思想。
public interface Runnable { public abstract void run(); }
从上面的定义可以看出,Runnable接口只有一个run()方法,表示要执行的任务。如果要使用Runnable接口实现多线程,需要新建一个类实现Runnable接口并实现run()方法。
二、与Thread类的对比
与Thread类相比,使用Runnable接口实现多线程有以下优点:
1、避免单继承局限性:Java中类只能单继承,但是使用Runnable接口却可以实现多个接口。
2、降低耦合性:Thread类直接包含了线程的执行方法run()并继承了Thread类的一些方法,与其他类的耦合度较高;而使用Runnable接口,线程的执行方法run()被单独封装,可以更加灵活的组合。
3、方便线程池管理:可将Runnable作为提交到线程池的任务对象。
三、使用示例
下面是一个使用Runnable接口实现多线程的示例。
public class MyRunnable implements Runnable { private String threadName; public MyRunnable(String threadName) { this.threadName = threadName; } public void run() { for(int i = 0; i < 5; i++) { System.out.println(threadName + " " + i); try { Thread.sleep((long)(Math.random() * 1000)); } catch (InterruptedException e) { e.printStackTrace(); } } } } public class Test { public static void main(String[] args) { MyRunnable r1 = new MyRunnable("Thread-1"); MyRunnable r2 = new MyRunnable("Thread-2"); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); } }
执行结果如下:
Thread-1 0 Thread-2 0 Thread-2 1 Thread-1 1 Thread-1 2 Thread-2 2 Thread-2 3 Thread-1 3 Thread-1 4 Thread-2 4
四、总结
Java Runnable是一种更加灵活、轻量级的实现多线程的方式,相比于Thread类更具有优势。使用Runnable接口可以提高java程序的弹性和可扩展性。在实际开发中,应该根据具体需求选择合适的多线程实现方式。