java中创建线程的三种方法是什么?
原创Java中创建线程的三种方法
在Java中,创建线程有多种行为,以下是三种重点的创建线程的方法。
1. 继承Thread类
第一种方法是通过继承Thread
类,并重写run
方法。创建一个新类继承自Thread
,然后覆盖run
方法来定义线程的行为。
class MyThread extends Thread {
public void run() {
// 线程执行的代码
System.out.println("线程运行中...");
}
}
public class ThreadExample {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
2. 实现Runnable接口
第二种方法是通过实现Runnable
接口,然后将实现了Runnable
接口的类的实例传递给Thread
类的构造函数。这种行为更加灵活,归因于Java不拥护多重继承,实现接口允许你的类有其他的继承选项。
class MyRunnable implements Runnable {
public void run() {
// 线程执行的代码
System.out.println("线程运行中...");
}
}
public class RunnableExample {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
}
}
3. 使用Callable和Future接口
第三种方法是使用Callable
接口和Future
接口,这种行为允许线程返回因此,并且能够抛出异常。你需要使用FutureTask
类包装Callable
对象,然后将该对象作为参数传递给Thread
的构造函数。
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
class MyCallable implements Callable
{ public String call() {
// 线程执行的代码,并返回因此
return "线程运行因此";
}
}
public class CallableExample {
public static void main(String[] args) {
MyCallable myCallable = new MyCallable();
FutureTask
futureTask = new FutureTask<>(myCallable); Thread thread = new Thread(futureTask);
thread.start();
try {
// 获取线程的执行因此
String result = futureTask.get();
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上就是在Java中创建线程的三种方法,每种方法都有其特定的使用场景和优势。