一 . 概述
在jdk之中包含两种线程的创建方式,并统一使用start()方法进行线程的启动.
二 .继承Thread 来创建线程
public class CreateThread { public static void main(String[] args) { //创建线程一并完成任务一 new Thread() { @Override public 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 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); } } }
三 ,实现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); } } }
四 .两种方法的比较
[1] 两种方式其实是一种方式,只不过使用Runnable接口来抽离线程逻辑单元.
[2] 我们一般情况下更喜欢使用Runnable的方式来创建线程.
[3] Runnable的方式类似于策略设计模式.
总结 : 在下面我们说一下策略设计模式.