有四种方式创建线程:
- 继承Thread类
- 实现Runnable接口
- 实现Callable接口
- 创建线程池(重要,单独讲解)
继承Thread类
public class MyThread extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " run()方法正在执行...");
}
}
public class ThreadTest1 {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
System.out.println(Thread.currentThread().getName() + " main()方法执行结束");
}
}
实现Runnable接口
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " run()方法正在执行...");
}
}
public class RunnableTest {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
System.out.println(Thread.currentThread().getName() + " main()方法执行结束");
}
}
//运行结果
main main()方法执行结束
Thread-0 run()方法正在执行...
实现Callable接口
import java.util.concurrent.Callable;
public class MyCallable implements Callable<Integer> {
@Override
public Integer call() throws Exception {
System.out.println(Thread.currentThread().getName()+" call()方法正在执行");
return 1;
}
}
import java.util.concurrent.FutureTask;
public class CallableTest{
public static void main(String[] args) {
// new Thread(new Runnable()).start();
// new Thread(new FutureTask<V>()).start();
// new Thread(new FutureTask<V>( Callable )).start();
MyCallable myCallable = new MyCallable();
FutureTask futureTask = new FutureTask(myCallable);
new Thread(futureTask).start();
System.out.println(Thread.currentThread().getName() + " main()方法执行结束");
}
}
//运行结果
main main()方法执行结束
Thread-0 call()方法正在执行
创建线程池(重要,单独讲解)
见线程池