Java线程的创建方式一般有三种,分别是继承Thread类、实现Runnable接口和实现Callable接口。下面我们一一进行讲解。
一、继承Thread类
该方式最简单的方式就是继承Thread类,然后重写run方法,在run方法中编写线程执行的任务。
public class MyThread extends Thread {
@Override
public void run() {
//实现线程的任务逻辑
}
}
使用该方式创建线程的示例代码如下所示:
public class Main {
public static void main(String[] args) {
MyThread a = new MyThread();
MyThread b = new MyThread();
a.start();
b.start();
}
}
二、实现Runnable接口
该方式的接口实现类需要实现Runnable接口中的run()方法,同时需要将该接口实现类作为Thread类的构造方法参数传入,最后调用start()方法来启动该线程。
public class MyRunnable implements Runnable {
@Override
public void run() {
//实现线程的任务逻辑
}
}
使用该方式创建线程的示例代码如下所示:
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread a = new Thread(myRunnable);
Thread b = new Thread(myRunnable);
a.start();
b.start();
}
}
三、实现Callable接口
Callable接口是实现线程的一种方式,不同于前面讲解的两种,Callable方法可以返回运算结果或者抛出异常。这里需要注意,使用Callable需要依赖线程池,Callable接口实现类需要作为线程池的参数传入。
public class MyCallable implements Callable<Integer> {
@Override
public Integer call() throws Exception {
//实现线程的任务逻辑
return 0;
}
}
使用该方式创建线程的示例代码如下所示:
public class Main {
public static void main(String[] args) throws ExecutionException, InterruptedException {
MyCallable myCallable = new MyCallable();
// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(2);
Future<Integer> a = executorService.submit(myCallable);
Future<Integer> b = executorService.submit(myCallable);
System.out.println(a.get());
System.out.println(b.get());
executorService.shutdown();
}
}
以上是Java线程的三种创建方式的详细攻略,希望对学习Java线程编程的小伙伴们有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java线程的三种创建方式 - Python技术站