好程序員大數據學習路線分享線程學習筆記二

  好程序員大數據學習路線分享線程學習筆記二,爲何要讓run()方法自動開啓。
  cpu有隨機性,線程搶到cpu,才能幹活,因此run()方法必須經過strat()方法自動啓動,這樣cpu就得到了一個信號,知道該線程能夠搶佔cpu資源;程序員

手動運行垃圾回收器函數

原理:當執行gc是,會觸發垃圾回收機制,開啓垃圾回收線程,執行finalize方法學習

cpu的特性:多個線程之間是搶cpu的關係,cpu有隨機性大數據

主函數結束,主任務區結束,主線程隨着任務的結束而結束,線程隨着任務的開始而開始this

建立線程線程

默認狀況下,主線程和垃圾回收線程都是由系統建立對象

①用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以後。

相關文章
相關標籤/搜索