java建立線程兩種方法

來源:互聯網
上載者:User

標籤:java   線程   

/* 進程:是一個正在執行中的程式              每一個進程執行都有執行順序,該順序是一個執行路徑,或叫控制單元線程:就是進程中一個獨立的控制單元     線程在控制著進程的執行一個進程至少包含一個線程Java VM 啟動時會有個進程java.exe該進程中至少有一個線程複製java程式的執行,這個線程啟動並執行代碼存在於main方法中,該線程稱之為主線程JVM啟動不止一個線程,還有複製記憶體回收機制的線程建立線程:(1)繼承Thread類;複寫run方法;建立對象,調用start方法 (2)實現Runnable介面,複寫run方法,建立線程對象,傳遞Runnable子類對象給Thread類建構函式 */package pack;public class Main {    public static void sys(Object obj) {        System.out.println(obj);    }    public static void main(String[] args) {        //method1();        //method2(); //繼承Thread方法建立線程,執行個體:4視窗賣票        method3();//實現Runnable方法建立線程,執行個體:4視窗賣票    }    public static void method1() {        Demo d1 = new Demo("one---"); //建立一個線程        Demo d2 = new Demo("two---"); //建立一個線程        d1.start();        d2.start();        for(int i=0;i<20;i++)            sys("main run");    }    public static void method2() {         Ticket t1 = new Ticket();        Ticket t2 = new Ticket();        Ticket t3 = new Ticket();        Ticket t4 = new Ticket();        t1.start();        t2.start();        t3.start();        t4.start();    }    public static void method3() {        TicketDemo t = new TicketDemo();        Thread t1 = new Thread(t);        Thread t2 = new Thread(t);        Thread t3 = new Thread(t);        Thread t4 = new Thread(t);        t1.start();        t2.start();        t3.start();        t4.start();    }}class Demo extends Thread {    Demo(String name) {        super(name); //父類定義了getName方法,實現自訂線程名稱,預設為Thread0,1    }    public void run() {        for(int i=0;i<20;i++)            //Main.sys(this.getName()+"demo run");            //上下兩句無差別,currentThread擷取當前線程對象,即this            Main.sys(Thread.currentThread().getName()+"demo run");    }}class Ticket extends Thread {    static int tickets = 200; //一共200張票,一定要static,4視窗公用200張    public void run() {        while(true) {            if(tickets>0)                Main.sys(this.getName()+"---"+tickets--);        }    }}class TicketDemo implements Runnable {        int tickets = 100;        public void run() {            while(true) {                if(tickets>0)                    Main.sys(Thread.currentThread().getName()+"---"+tickets--);            }        }    }

java建立線程兩種方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.