1.继承Thread类
public class Thread1 extends Thread { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("继承Thread实现线程-" + Thread.currentThread().getName() + " ==> " + i); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } } }
2.实现Runnable接口
public class Thread2 implements Runnable { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("实现Runnable实现线程-" + Thread.currentThread().getName() + " ==> " + i); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } } }
3.实现Callable接口
import java.util.concurrent.Callable; public class Thread3 implements Callable<String> { @Override public String call() throws Exception { for (int i = 0; i < 10; i++) { System.out.println("实现Callable实现线程-" + Thread.currentThread().getName() + " ==> " + i); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } return "success"; } }
测试线程的开启
public class Test { public static void main(String[] args) { method1(); method2(); method3(); } /** * 通过继承Thread类实现多线程 */ public static void method1() { Thread1 t1 = new Thread1(); Thread1 t2 = new Thread1(); t1.setName("线程1"); t2.setName("线程2"); // t1.run(); // 方法的调用,不会启动线程 // t2.run(); t1.start(); t2.start(); } /** * 通过实现Runnable接口实现多线程 */ public static void method2() { Thread t1 = new Thread(new Thread2(), "线程T1"); // 需要通过Thread来开启线程 Thread t2 = new Thread(new Thread2(), "线程T2"); t1.start(); t2.start(); } /** * 通过实现Callable接口实现多线程 */ public static void method3() { Thread3 t1 = new Thread3(); // 1.定义目标对象 Thread3 t2 = new Thread3(); ExecutorService service = Executors.newFixedThreadPool(2); // 2.定义定长线程池,最大并发数为2 Future<String> future1 = service.submit(t1); // 3.提交执行 Future<String> future2 = service.submit(t2); String result1 = ""; String result2 = ""; try { result1 = future1.get(); // 4.获取结果 result2 = future2.get(); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } System.out.println("result1:" + result1); System.out.println("result2:" + result2); service.shutdownNow(); // 5.关闭服务 } }
原文:https://www.cnblogs.com/fengb/p/13278748.html