您的位置:

Java Runnable

一、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程序的弹性和可扩展性。在实际开发中,应该根据具体需求选择合适的多线程实现方式。