Java中创建线程的三种方式
方式一:继承Thread并重写run()方法
步骤:
- 定义子类继承自Thread 并重写run()方法
- 创建子类实例
- 通过start()方法启动线程
public class MyThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
//获取线程名
String name = Thread.currentThread().getName();
System.out.println(name);
}
}
public class Test01 {
public static void main(String[] args) {
//获取主线程名
String name = Thread.currentThread().getName();
System.out.println(name);
MyThread myThread = new MyThread();
myThread.start();
}
}
方式二:实现Runnable接口
步骤:
- 定义Runnable接口的实现类,并重写接口的run()方法
- 创建Runnable 实现类的对象
- 创建Tread类的对象
- 通过start()方法启动线程
public class RunnableImpl implements Runnable {
@Override
public void run() {
String name = Thread.currentThread().getName();
System.out.println(name);
}
}
public class Test01 {
public static void main(String[] args) {
RunnableImpl runnableImpl = new RunnableImpl();
Thread thread = new Thread(runnableImpl, "myTherad");
thread.start();
String name = thread.getName();
System.out.println(name);
}
}
方式三:使用Callable创建线程
步骤:
- 实现Callable接口,并重写call()方法
- 创建Callable实现类的对象
- 创建FutureTask对象,调用Callable实现类的对象
- 通过start()方法启动线程
import java.util.concurrent.Callable;
public class CallableImpl<V> implements Callable<Thread> {
@Override
public Thread call() throws Exception {
// TODO Auto-generated method stub
return null;
}
}
import java.util.concurrent.FutureTask;
public class Test01 {
public static void main(String[] args) {
CallableImpl<Thread> callableImpl = new CallableImpl<>();
FutureTask<Thread> futureTask = new FutureTask<>(callableImpl);
Thread thread = new Thread(futureTask);
thread.start();
}
}