创建线程的四种方式
1、 继承Thread 类
通过此方法创建线程 需要重写run方法
class ThreadTest extends Thread{
@Override
public void run() {
System.out.println("ThreadTest running");
}
}
public class ThreadTest01 {
public static void main(String[] str){
ThreadTest threadTest = new ThreadTest();
threadTest.start();
System.out.println("main线程");
}
}
2、实现Runnable 接口
运用实现接口的方式,避免多继承问题 推荐使用,也需要重写run方法
class RunableTest implements Runnable{
@Override
public void run() {
System.out.println("Runnable running");
}
}
public class ThreadTest02 {
public static void main(String[] str){
RunableTest runableTest = new RunableTest();
Thread thread = new Thread(runableTest);
thread.start();
System.out.println("main");
}
}
实现Callable 接口 (可以获取返回值)
因为有返回值,所以可以线程之间的通信 重写call方法 需要抛出异常
class CallableTest implements Callable{
@Override
public Object call() throws Exception {
System.out.println("callable running");
return 100;
}
}
public class ThreadTest03 {
public static void main(String[] str) throws ExecutionException, InterruptedException {
CallableTest callableTest = new CallableTest();
FutureTask<Integer> fsk = new FutureTask<>(callableTest);
Thread thread = new Thread(fsk);
thread.start();
System.out.println("main");
System.out.println(fsk.get());
}
}
通过线程池创建