(JAVA)线程
/*** @author Alina* @date 2021年12月12日 11:37 下午* 線程:分為三個級別* 1.定義類,繼承Thread 類,繼承線程類* 該類重寫run()方法* 創(chuàng)建子類對象* * 執(zhí)行join方法的線程,會一次執(zhí)行完畢,其他線程在爭奪資源* * 線程休眠 :sleep 靜態(tài)* * 線程的讓步:yield 靜態(tài)* * 線程的守護:setDaemond() 非靜態(tài)* 最低:--->1* 默認:--->5* 最高:--->10* 2.定義類。繼承runnable接口* 重寫抽象方法run()* 創(chuàng)建thread 類的對象。Thread 構(gòu)造方法中傳遞Runnable接口的實現(xiàn)類對象* 調(diào)用thread類的start方法* 利:實現(xiàn)接口,避免單繼承的局限性* 實現(xiàn)接口,也可以共享數(shù)據(jù)* 弊:存在安全隱患,使用同步技術(shù),保證線程安全* 共享數(shù)據(jù),只有一個線程在運行* 關(guān)鍵字synchronized(任意對象){* 線程操作的共享數(shù)據(jù)* }******/
class TicketRunnable implements Runnable{private int ticker = 1 ;private Object obj = new Object();public void run() {synchronized (obj){while (ticker<100){try{Thread.sleep(20);}catch (Exception e){}System.out.println(Thread.currentThread().getName()+"no."+"...."+ticker);ticker++;}}}
}public class ThreadDemo {public static void main(String[] args) throws Exception{TicketRunnable tp = new TicketRunnable();Thread t0 = new Thread(tp);Thread t1 = new Thread(tp);Thread t2= new Thread(tp);t0.start();t1.start();t2.start();}public static void method_2()throws Exception{SubThread p0 = new SubThread();SubThread p1 = new SubThread();p0.start();p0.join();p1.start();for (int x=0;x<100;x++){Thread.sleep(100);Thread.yield();System.out.println(Thread.currentThread().getName()+"......"+x);}}public static void method_1(){PrioityThead pt = new PrioityThead();int x = pt.getPriority();System.out.println(x);//獲取當(dāng)前線程的優(yōu)先級int y = Thread.currentThread().getPriority();System.out.println(y);}
}
總結(jié)
- 上一篇: im即时通讯源码+软件+app附详细封装
- 下一篇: linux用vsc写c语言,vscode