001 線程的創建和啟動
阿新 • • 發佈:2018-04-22
模式 創建線程 ID 高級 [1] 使用 col pri ride
一 .概述
在java之中有兩種方式進行線程的創建,
[1]繼承Thread,重寫run()方法
[2]實現Runnable接口,實現run()方法.
在JUC中的高級接口其實還是這兩種方式進行完成的.
二 .繼承Thread創建線程.
public class CreateThread { public static void main(String[] args) { //創建線程一並完成任務一 new Thread() { @Overridepublic void run() { task1(); } }.start(); new Thread() { @Override public void run() { task2(); }; }.start(); }public static void task1() { for(int i=0;i<20;i++) { try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task1===>"+i); } } public staticvoid task2() { for(int i=0;i<20;i++) { try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task2===>"+i); } } }
三.實現Runnable接口來創建線程
public class UseRunnable { public static void main(String[] args) { new Thread(new Runnable() { public void run() { task1(); } }).start(); new Thread(new Runnable() { public void run() { task2(); } }).start(); } public static void task1() { for(int i=0;i<20;i++) { try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task1===>"+i); } } public static void task2() { for(int i=0;i<20;i++) { try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task2===>"+i); } } }
四 . 策略模式
其實線程的創建方式只有一種,就是創建一個Thread對象.
那麽我們使用Runnable接口的方式又是什麽呢?
這就是一種策略模式的運用.
001 線程的創建和啟動