Java多线程实现Runnable方式是一种比继承Thread类更加实用、更加灵活的多线程编程方式。下面是Java多线程实现Runnable方式的完整攻略。
1. 实现Runnable接口
要实现Runnable接口,需要创建具体实现了Runnable接口的类并实现run方法。这个run方法就是我们所说的线程执行体,是真正我们需要在线程中执行的代码。
public class MyRunnable implements Runnable {
@Override
public void run() {
// 需要在线程中执行的代码
}
}
2. 创建并启动线程
创建线程的过程和线程继承Thread类的方法一样,只不过这里需要将实现了Runnable接口的类实例传入Thread类的构造方法中。创建线程后,需要使用start()方法启动线程。
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
3. 示例说明
示例一
public class PrintRunnable implements Runnable {
@Override
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.println(Thread.currentThread().getName() + "输出:" + i);
}
}
}
public class Main {
public static void main(String[] args) {
PrintRunnable printRunnable = new PrintRunnable();
Thread thread1 = new Thread(printRunnable, "线程1");
Thread thread2 = new Thread(printRunnable, "线程2");
thread1.start();
thread2.start();
}
}
这个示例中,我们创建了一个PrintRunnable的类,这个类实现了Runnable接口并重写了run方法进行了输出操作。然后我们创建了两个线程并将PrintRunnable的实例作为参数传入Thread的构造方法中。最后分别启动两个线程,这个时候我们会看到两个线程各自输出自己的序号。
示例二
public class MyRunnable implements Runnable {
private final Object lock = new Object();
@Override
public void run() {
synchronized (lock) {
try {
System.out.println(Thread.currentThread().getName() + " 正在运行");
lock.wait();
System.out.println(Thread.currentThread().getName() + " 结束运行");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread1 = new Thread(myRunnable, "线程1");
Thread thread2 = new Thread(myRunnable, "线程2");
thread1.start();
try {
// 等待1秒让线程1先运行
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread2.start();
synchronized (myRunnable.lock) {
myRunnable.lock.notify();
}
}
}
这个示例中,我们创建了一个包含了等待和唤醒线程的MyRunnable类。在这个类的run方法中,我们使用了synchronized关键字和wait、notify方法来进行等待和唤醒操作。然后我们创建了两个线程并启动线程1,等待一段时间后再启动线程2。然后我们在主线程中通过synchronized和lock来唤醒等待中的那条线程(这里选择线程1)。
以上两个示例可以帮助我们深入理解Java多线程实现Runnable方式的使用方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java多线程实现Runnable方式 - Python技术站