Concurrent - Semaphore - availablePermits() & drainPermits()

原创转载请注明出处:http://agilestyle.iteye.com/blog/2343040

availablePermits()返回此Semaphore对象中当前可用的permits个数

drainPermits()获取并返回立即可用的所有permits个数,并将可用permits置为0


 

AvailablePermitsTest.java

package org.fool.java.concurrent.semaphore.availabledrainpermits;

import java.util.concurrent.Semaphore;

public class AvailablePermitsTest {
    public static void main(String[] args) {
        MyService service = new MyService();
        service.testMethod();
    }

    public static class MyService {
        private Semaphore semaphore = new Semaphore(10);

        public void testMethod() {
            try {
                semaphore.acquire();
                System.out.println(semaphore.availablePermits());   // outputs 9
                System.out.println(semaphore.availablePermits());   // outputs 9
                System.out.println(semaphore.availablePermits());   // outputs 9
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                semaphore.release();
            }
        }
    }
}

Run


 

DrainPermitsTest.java

package org.fool.java.concurrent.semaphore.availabledrainpermits;

import java.util.concurrent.Semaphore;

public class DrainPermitsTest {
    public static void main(String[] args) {
        MyService service = new MyService();
        service.testMethod();
    }

    public static class MyService {
        private Semaphore semaphore = new Semaphore(10);

        public void testMethod() {
            try {
                semaphore.acquire();
                System.out.println(semaphore.availablePermits());
                System.out.println(semaphore.drainPermits() + " " + semaphore.availablePermits());
                System.out.println(semaphore.drainPermits() + " " + semaphore.availablePermits());
                System.out.println(semaphore.drainPermits() + " " + semaphore.availablePermits());
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                semaphore.release();
            }
        }
    }
}

Run 


 

猜你喜欢

转载自agilestyle.iteye.com/blog/2343040