方式一,继承Thread类:
Thread 类本质上是实现了 Runnable 接口的一个实例。启动线程的唯一方法就是通过启动Thread类的start()方法,start()方法是一个native方法,它会启动一个新线程,并执行run()方法。
1 public class ThreadTest extends Thread { 2 public static void main(String[] args) { 3 4 ThreadTest threadTest = new ThreadTest(); 5 threadTest.start(); 6 } 7 8 @Override 9 public void run() { 10 System.out.println("我是继承Thread类创建的线程……"); 11 } 12 }
方式二,实现Runable接口:
1 public class RunableTest implements Runnable{ 2 public static void main(String[] args) { 3 Thread thread = new Thread(new RunableTest()); 4 thread.start(); 5 } 6 public void run() { 7 System.out.println("这是runable创建的线程……"); 8 } 9 }
方式三,实现Callable接口通过FutureTask包装器来创建线程:
1 public class CallableTest implements Callable<String> { 2 public String call() throws Exception { 3 String name = "我是Callable创建的线程,而且可以带返回值……"; 4 return name; 5 } 6 7 public static void main(String[] args) throws ExecutionException, InterruptedException { 8 CallableTest callableTest = new CallableTest(); 9 ExecutorService executorService = Executors.newFixedThreadPool(1); 10 Future<String> future = executorService.submit(callableTest); 11 System.out.println(future.get()); 12 executorService.shutdown(); 13 } 14 15 }
原文:https://www.cnblogs.com/bkeryou/p/13223548.html