From http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html:
no actual permit objects are used; the Semaphore just keeps a count of the number available and acts accordingly.
I checked the source, and it is indeed backed by an int
(not a long
).