1. 程式人生 > >001 線程的創建和啟動

001 線程的創建和啟動

模式 創建線程 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() {
                    @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);
        }
    }
}

四 . 策略模式

其實線程的創建方式只有一種,就是創建一個Thread對象.

那麽我們使用Runnable接口的方式又是什麽呢?

這就是一種策略模式的運用.

  

001 線程的創建和啟動