您好,登錄后才能下訂單哦!
本篇內容主要講解“為什么要讓run()方法自動開啟”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“為什么要讓run()方法自動開啟”吧!
cpu有隨機性,線程搶到cpu,才能干活,所以run()方法必須通過strat()方法自動啟動,這樣cpu就獲得了一個信號,知道該線程可以搶占cpu資源;
手動運行垃圾回收器
原理:當執行gc是,會觸發垃圾回收機制,開啟垃圾回收線程,執行finalize方法
cpu的特性:多個線程之間是搶cpu的關系,cpu有隨機性
主函數結束,主任務區結束,主線程隨著任務的結束而結束,線程隨著任務的開始而開始
創建線程
默認情況下,主線程和垃圾回收線程都是由系統創建
①用Thread創建線程對象
Thread thread1=new Thread(); //只是創建Thread對象
thread1.start(); //開啟線程
Thread類里的run()方法默認是空的,所以start()方法執行結果
所以需要繼承Thread類 重寫run()方法
若run()方法直接被手動調用,run()對應的線程跟調用該方法所在的線程對應
Thread類實現了Runnable接口,Runnable接口里面只有run()方法,Thread類里實現的run()方法也只是空方法體,需要被繼承去重寫
創建一個A類實現Runnable接口,重寫run()方法
A a=new A();
Thread to=new Thread(A);
to.start();
給某個方法的線程沖突部分加鎖
鎖的條件
①鎖必須是對象
②要被所有的線程共享
同步代碼塊
synchronized(this){代碼塊}
同步函數
非靜態 public synchronized void xxx(){} //默認的鎖是this synchronized(this)
靜態 public synchronized static void xxx(){} //默認的鎖是當前類的字節碼文件 synchronized(xx.class)
notify(終止線程休眠) wait(線程休眠,不可以搶占cpu)
wait()-->必須在同步環境中使用,必須使用鎖調用,執行這行代碼,對應的是哪個線程,就
notify()-->喚醒的是同一把鎖下的線程,
Lock(顯示同步) 替換 Synchronized(隱式同步)
//創建鎖對象 Lock lock=new ReentrantLock();
//用于生產任務的Condition
Condition proCon = lock.newCondition();
//用于結束任務的condition
Condition conCon = lock.newCondition();
//開啟鎖
lock.lock();
proCon.await();
conCon.signal();
conCon.await();
proCon.signal();
//關閉鎖
lock.unlock();
守護線程
當程序調用setDaemon方法時,并且將參數設置成true,當前線程就變成了了守護線程,只要主線程結束,該守護線程就會結束,這個方法一定要在start前調用
join()方法,優先級高于主線程,主線程會等當前的線程執行完后再去執行;該方法是在start之后。
到此,相信大家對“為什么要讓run()方法自動開啟”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。