JAVA——多线程应用

信号量(semaphore)

1.声明:Semaphore sema = new Semaphore(1); //令其初值为1

2.wait操作:this.sema.acquire(1); //申请1个信号量使用权

3.signal操作:this.sema.release(1); //释放一个信号量

4.runnable的函数:(Runnable printFizz)调用:printFizz.run() outputs "fizz"

5. IntConsumer的函数:(IntConsumer printNumber) printNumber.accept(x) outputs "x", where x is an integer.

 

AtomicInteger

1.声明初始化AtomicInteger firstJobDone = new AtomicInteger(0)

2.signal操作: firstJobDone.incrementAndGet();

3.wait操作循环等待

    while (firstJobDone.get() != 1) {

      // waiting for the first job to be done.

    }

4.使用方法:

public final int getAndSet(int newValue)       //给AtomicInteger设置newValue并返回加oldValue

public final boolean compareAndSet(int expect, int update)    //如果输入的值和期望值相等就set并返回true/false

public final int getAndIncrement()     //对AtomicInteger原子的加1并返回当前自增前的value

public final int getAndDecrement()   //对AtomicInteger原子的减1并返回自减之前的的value

public final int getAndAdd(int delta)   //对AtomicInteger原子的加上delta值并返加之前的value

public final int incrementAndGet()   //对AtomicInteger原子的加1并返回加1后的值

public final int decrementAndGet()    //对AtomicInteger原子的减1并返回减1后的值

public final int addAndGet(int delta)   //给AtomicInteger原子的加上指定的delta值并返回加后的值

发布了85 篇原创文章 · 获赞 0 · 访问量 3960

猜你喜欢

转载自blog.csdn.net/qq_35706707/article/details/104456946