java中的Semaphore

由於線程之間存在資源的競爭,所有根據CPU的調節,線程的執行先後是隨機的。

如果某些線程執行的時候,希望獨佔CPU資源,可以使用Semaphore信號量。

 

線程的定義可以如下:

import java.util.concurrent.Semaphore;

public class SubThread extends Thread{

	private Semaphore semaphore;  
	
    public SubThread(Semaphore semaphore){  
        this.semaphore=semaphore;  
    }  
      
    public Semaphore getSemaphore() {  
        return semaphore;  
    }  
    
	@Override
	public void run() {
		// TODO Auto-generated method stub
		int i = 0;
		while( i < 100){
			i++;
			System.out.println("No."+i+" Sub thread11111111 is running!");
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		semaphore.release();
	}

}

 

該線程的利用方法如下:

 

    public static void main(String[] args) {
        try {
            SubThread subThread = new SubThread(new Semaphore(0));
            SubThread2 subThread2 = new SubThread2();
            SubThread3 subThread3 = new SubThread3();
            subThread.start();
            subThread.getSemaphore().acquire();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } 
        System.out.println("Main thread is running!");
    }

 

 該線程會執行完再執行接下來的代碼。

 

發佈了72 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章