Java Semaphore
package test;
/**
*
* @author openpk
*/
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class Main {
public static void main(String[] args) {
// Ï̳߳Ø
ExecutorService exec = Executors.newCachedThreadPool();
// Ö»ÄÜ5¸öÏß³Ìͬʱ·ÃÎÊ
final Semaphore semp = new Semaphore(1);
// Ä£Äâ20¸ö¿Í»§¶Ë·ÃÎÊ
for (int index = 0; index < 10; index++) {
final int NO = index;
Runnable run = new Runnable() {
public void run() {
try {
// »ñÈ¡Ðí¿É
semp.acquire();
System.out.println("Accessing: " + NO);
for(int i=0;i<400;i++)
System.out.print("Accessing: " + NO+" "+i);
System.out.println("");
Thread.sleep((long) (Math.random() * 10000));
// ·ÃÎÊÍêºó£¬ÊÍ·Å
semp.release();
} catch (InterruptedException e) {
}
}
};
exec.execute(run);
}
exec.shutdown();
}
}
// Í˳öÏ̳߳Ø
Ïà¹ØÎĵµ£º
Abstract
ÔÚ¿ª·¢ÖУ¬Èç¹ûij¸öʵÀýµÄ´´½¨ÐèÒªÏûºÄºÜ¶àϵͳ×ÊÔ´£¬ÄÇôÎÒÃÇͨ³£»áʹÓöèÐÔ¼ÓÔØ»úÖÆ£¬Ò²¾ÍÊÇ˵ֻÓе±Ê¹Óõ½Õâ¸öʵÀýµÄʱºò²Å»á´´½¨Õâ¸öʵÀý£¬Õâ¸öºÃ´¦ÔÚ
µ¥ÀýģʽÖеõ½Á˹㷺ӦÓá£Õâ¸ö»úÖÆÔÚsingle-threaded»·¾³ÏµÄʵÏַdz£¼òµ¥£¬È»¶øÔÚmulti-threaded» ......
Java JNIÊÇJava Native InterfaceµÄËõд£¬ÖÐÎÄ¿ÉÒëΪJava±¾µØµ÷Óá£Java Native Interface (JNI)±ê×¼³ÉΪjavaƽ̨µÄÒ»²¿·Ö£¬ËüÔÊÐíJava´úÂëºÍÆäËûÓïÑÔдµÄ´úÂë½øÐн»»¥¡£±¾ÎÄÏòÄúÏêϸ½éÉÜJava JNI¡£
Java »·¾³ºÍÓïÑÔ¶ÔÓÚÓ¦ÓóÌÐò¿ª·¢À´ËµÊǷdz£°²È«ºÍ¸ßЧµÄ¡£µ«ÊÇ£¬Ò»Ð©Ó¦ÓóÌÐòÈ´ÐèÒªÖ´Ðд¿ Java ³ÌÐòÎÞ·¨Íê³ÉµÄһЩÈÎÎ ......
ÒÔÏÂÉèÖÃWinXP¼°ÒÔÉÏÓû§£¬ÓÒ¼üµã»÷ÎҵĵçÄÔ->ÊôÐÔ->¸ß¼¶->»·¾³±äÁ¿£¬ÉèÖü´¿É¡£ÉèÖÃÍê³ÉºóÐèÖØÐÂÆô¶¯ÃüÁîÌáʾ·û²ÅÄÜÉúЧ¡£¾ßÌåÈçÏ£º
JAVA»·¾³±äÁ¿ÉèÖÃ
WindowsÏÂJAVAÓõ½µÄ»·¾³±äÁ¿Ö÷ÒªÓÐ3¸ö£¬JAVA_HOME¡¢CLASSPATH¡¢PATH¡£
JAVA_HOMEÖ¸ÏòµÄÊÇJDKµÄ°²×°Â·¾¶£¬ÈçD:\Program Files\IBM\Java50£¬ÔÚÕâ·¾¶ÏÂÄãÓ¦¸ÃÄܹ»Õ ......