14.3 线程实现方法2
生活随笔
收集整理的這篇文章主要介紹了
14.3 线程实现方法2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package cn.chen.synchronizefunction2;
/*
自定義線程的創建方式:方式一:1.自定義一個類繼承Thread類。2.重寫Thread類的run方法,把自定義線程的任務代碼寫在run方法上。3.創建Thread的子類對象,并且調用start方法啟動一個線程。注意:不能直接調用run方法,調用start方法的時候線程就會開啟,線程一旦開啟就會執行run方法中代碼,如果直接調用就相當于調用一個普通方法而已。方式二:1.自定義一個類實現Runnable接口。2.實現Runnable接口的run方法,把自定義線程的任務定義在run方法上。3.創建Runnable實現類(d)的對象調用start方法開啟線程。 4.創建Thread類的對象,并且把Runnable實現類的對象(d)作為實參傳遞。5.調用Thread對象的start方法開啟一個線程。注意:1.Runnable實現類的對象并不是一個線程對象,只不過是實現了Runnable接口的對象而已。2.只有Thread或者Thread的子類才是線程對象。3.Runnable 實現類的對象作為實參傳遞給Thread對象。
*/
public class Demo2 implements Runnable{@Override// TODO Auto-generated method stubpublic void run(){System.out.println("this : "+ this);System.out.println("當前線程 " + Thread.currentThread());for(int i = 0; i < 10; i++){System.out.println(Thread.currentThread().getName()+":"+i);} }public static void main(String[] args) {// TODO Auto-generated method stubDemo2 d = new Demo2();Thread t = new Thread(d,"狗娃");t.start();}}
推薦使用第二種實現方式:
package cn.chen.threadpractice; class SaleTicket implements Runnable{int num = 10;@Overridepublic void run() {// TODO Auto-generated method stubwhile(true){synchronized("鎖"){if(num>0){System.out.println(Thread.currentThread().getName()+"售出了第"+num+"號票");num--;}else{System.out.println("售罄了");break;}}}}} public class ThreadPractice {public static void main(String[] args) {// TODO Auto-generated method stubSaleTicket s = new SaleTicket();Thread t1 = new Thread(s,"窗口1");Thread t2 = new Thread(s,"窗口2");Thread t3 = new Thread(s,"窗口3");t1.start();t2.start();t3.start();}}總結
以上是生活随笔為你收集整理的14.3 线程实现方法2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 14.2线程死锁
- 下一篇: 14.4 线程通讯-生产者与消费者