java多线程有4种实现方法
1、继承Thread类实现,重写run方法
2、实现Runnable接口,重写run方法
3、实现Callable接口通过FutureTask包装器来创建Thread线程
4、通过线程池创建线程
接下来我会通过例子为大家展现各个方法的不同之处
一、继承Thread类实现多线程的步骤:
1. 在Java中负责实现线程功能的类是java.lang.Thread 类。
2. 可以通过创建 Thread的实例来创建新的线程。
3. 每个线程都是通过某个特定的Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。
4. 通过调用Thread类的start()方法来启动一个线程
public class TestThread extends Thread {//自定义类继承Thread类
//run()方法里是线程体
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(this.getName() + ":" + i);//getName()方法是返回线程名称
}
}
public static void main(String[] args) {
TestThread thread1 = new TestThread();//创建线程对象
thread1.start();//启动线程
TestThread thread2 = new TestThread();//创建线程对象
thread2.start();//启动线程
}
}
运行结果:
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-1:0
Thread-0:4
Thread-1:1
Thread-0:5
Thread-1:2
Thread-0:6
Thread-1:3
Thread-0:7
Thread-1:4
Thread-0:8
Thread-1:5
Thread-0:9
Thread-1:6
Thread-1:7
Thread-1:8
Thread-1:9
此种方式的缺点:如果我们的类已经继承了一个类,则无法再继承Threa类。
二、通过Runnable接口实现多线程
-
创建一个实现Runnable接口的类
-
实现Runnable接口中的抽象方法:run():将创建的线程要执行的操作声明在此方法中
-
创建Runnable接口实现类的对象
-
将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
-
调用Thread类中的start():①启动线程②调用线程的run()--->调用Runnable接口实现类的run()
public class TestThread2 implements Runnable {//自定义类实现Runnable接口;
//run()方法里是线程体;
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
public static void main(String[] args) {
//创建线程对象,把实现了Runnable接口的对象作为参数传入;
Thread thread1 = new Thread(new TestThread2());
thread1.start();//启动线程;
Thread thread2 = new Thread(new TestThread2());
thread2.start();
}
}
执行结果与上一种方法类似。
注:本文为Wayne原创,未经许可不得在任何平台转载。如需转载,与作者联系~
关注微信公众号:智识训练营(微信ID:TechBootcamp),获取更多资讯~