java中的Semaphore

来源:互联网 发布:网络数据包发送工具 编辑:程序博客网 时间:2024/06/01 07:48

由于线程之间存在资源的竞争,所有根据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;      }      @Overridepublic void run() {// TODO Auto-generated method stubint 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 blocke.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!");    }

 

 该线程会执行完再执行接下来的代码。

 

0 0
原创粉丝点击