Java 提供了四种创建线程的方法:
通过实现 Runnable 接口;
通过继承 Thread 类本身;
通过 Callable 和 Future 创建线程;
线程池;
这里展示前三种
继承Thread:
重写run()方法
实现Runnable:
重写run()方法
实现Callable:
重写call()方法,有返回值
注意:Callable需要使用FutureTask类帮助执行
public class ThreadTest{
public static void main(String[] args) throws ExecutionException, InterruptedException {
//1、实现 Runnable
Thread runnableDemo = new Thread(new RunnableDemo("A"));
runnableDemo.start();
//2、继承 Thread
ThreadDemo threadDemo = new ThreadDemo();
threadDemo.start();
//3、实现Callable 借助 FutureTsk类
FutureTask<String> ft = new FutureTask<>(new CallableDemo());
Thread thread = new Thread(ft);
thread.start();
//获取 callable 的返回值
System.out.println(ft.get());
}
}
public class RunnableDemo implements Runnable{
String name;
RunnableDemo(String name){
this.name = name;
}
/**
*
* @see Thread#run()
*/
@Override
public void run() {
System.out.println("RunnableDemo 线程:"+name+"开始执行");
}
}
public class ThreadDemo extends Thread{
public void run(){
System.out.println("ThreadDemo 线程 :"+this.getName()+"执行");
}
}
public class CallableDemo implements Callable<String> {
/**
* Computes a result, or throws an exception if unable to do so.
*
* @return computed result
* @throws Exception if unable to compute a result
*/
@Override
public String call() throws Exception {
System.out.println("CallableDemo 运行");
return "CallableDemo 返回值";
}
}