java¶àÏ̵߳ÄЧÂʾÍÒ»¶¨¸ßÂð£¿
ºÜ¾ÃûÉÏÀ´ÁË£¬·¢ÏÖËäÈ»×ÊÁϺÍÊé¿´µÄºÜ¶à£¬µ«ÊǺܾÃûÅöµÄ¶«Î÷»¹ÊǺÜÈÝÒ×µÍü¡£ÒÔºóÏ£ÍûÄܶà¼Ç¼°É¡£
½ñÌìÍæÁË°ÑÏ̳߳أ¬²¢¶ÔÆäÖеIJÎÊý×öÁËһЩµ÷Õû£¬²¢¼Ç¼Ôڶಢ·¢Çé¿öÏÂÏß³ÌÊý¶Ô¸÷ÖÖÇé¿öµÄ·´Ó¦¡£³ÌÐòÊÇÍøÉÏÕҵģ¬²¢×÷ÁËÉÔ΢Ð޸ġ£
javaµÄÏ̳߳ØʵÏÖ£¬ThreadPool
package net.zj.hz.yk.threadpool;
import java.util.LinkedList;
public class ThreadPool extends ThreadGroup {
private boolean isClosed = false; // Ï̳߳ØÊÇ·ñ¹Ø±Õ
private LinkedList workQueue; // ¹¤×÷¶ÓÁÐ
private static int threadPoolID = 1; // Ï̳߳صÄid
public ThreadPool(int poolSize) {
super(threadPoolID + "");// Ö¸¶¨ThreadGroupµÄÃû³Æ
setDaemon(true); // ¼Ì³Ðµ½µÄ·½·¨£¬ÉèÖÃÊÇ·ñÊØ»¤Ï̳߳Ø
workQueue = new LinkedList(); // ´´½¨¹¤×÷¶ÓÁÐ
for (int i = 0; i < poolSize; i++) {
new WorkThread(i).start(); // ´´½¨²¢Æô¶¯¹¤×÷Ïß³Ì,Ï̳߳ØÊýÁ¿ÊǶàÉپʹ´½¨¶àÉÙ¸ö¹¤×÷Ïß³Ì
}
}
/** µÈ´ý¹¤×÷Ḭ̈߳ÑËùÓÐÈÎÎñÖ´ÐÐÍê±Ï */
public void waitFinish() {
synchronized (this) {
isClosed = true;
notifyAll(); // »½ÐÑËùÓл¹ÔÚgetTask()·½·¨ÖеȴýÈÎÎñµÄ¹¤×÷Ïß³Ì
}
// activeCount() ·µ»Ø¸ÃÏß³Ì×éÖлÏ̵߳ĹÀ¼ÆÖµ¡£
Thread[] threads = new Thread[activeCount()];
// enumerate()·½·¨¼Ì³Ð×ÔThreadGroupÀ࣬¸ù¾Ý»î¶¯Ï̵߳ĹÀ¼ÆÖµ»ñµÃÏß³Ì×éÖе±Ç°ËùÓлµÄ¹¤×÷Ïß³Ì
int count = enumerate(threads);
for (int i = 0; i < count; i++) { // µÈ´ýËùÓй¤×÷Ï߳̽áÊø
try {
threads[i].join(); // µÈ´ý¹¤×÷Ï߳̽áÊø
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
/** ¹Ø±ÕÏß³Ì³Ø */
public synchronized void closePool() {
if (!isClosed) {
// µÈ´ý¹¤×÷Ïß³ÌÖ´ÐÐÍê±Ï
waitFinish();
isClosed = true;
// Çå¿Õ¹¤×÷¶ÓÁÐ
workQueue.clear();
// ÖжÏÏ̳߳ØÖеÄËùÓеŤ×÷Ïß³Ì,´Ë·½·¨¼Ì³Ð×ÔThreadGroupÀà
interrupt();
}
}
/** Ïò¹¤×÷¶ÓÁÐÖмÓÈëÒ»¸öÐÂÈÎÎñ,Óɹ¤×÷Ïß³ÌÈ¥Ö´ÐиÃÈÎÎñ */
public synchronized void execute(Runnable task) {
if (isClosed) {
throw new IllegalStateException();
}
if (task != null) {
// Ïò¶ÓÁÐÖмÓÈëÒ»¸öÈÎÎñ
Ïà¹ØÎĵµ£º
1. µ±Ä³¸öÀàÖеÄij¸ö·½·¨Öеľֲ¿±äÁ¿µÄÃû×ÖÓë¸ÃÀàÖеÄÈ«¾Ö±äÁ¿µÄÃû×ÖÏàͬʱ ¸ÃÈ«¾Ö±äÁ¿½«±»Òþ²Ø£»´Ëʱ Èç¹ûÏëÔڸ÷½·¨ÖÐʹÓÃÈ«¾Ö
±äÁ¿ ±ØÐëʹÓùؼü×Ö£¨this.È«¾Ö±äÁ¿Ãû£©
2. µ±this¹Ø¼ü×Ö³öÏÖÔÚÀàµÄʵÀý·½·¨ÖÐʱ£¬´ú±íÕýÔÚµ÷Óø÷½·¨µÄµ±Ç°¶ÔÏó
3.  ......
Ò»¡¢ÈçºÎ°²×°JDK£¿
µ±ÎÒÃÇ´ÓÍøÂçÉÏDOWNÏÂJ2SE 5.0 JDKÒÔºó£¨ÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþ£¬ÎļþÃû½Ð×öjdk-1_5_0-windows-i586.exe£¬µ±È»Õâ¸öÃû×Ö»áÒòΪ¶ÔÓ¦²Ù×÷ϵͳµÄ²»Í¬¶øÓÐËùÇø±ðµÄ£¬ÎÒʹÓõIJÙ×÷ϵͳ¾ÍÊÇWINDOWS£¬´ó¼Ò·¢ÏÖÁËÂ𣿣©£¬Ë«»÷Ëû¾Í¿ªÊ¼°²×°ÁË¡£ÐèҪעÒâµÄ¾ÍÊÇÑ¡Ôñ°²×°Â·¾¶µÄÎÊÌâ ......
Java
ÐéÄâ»ú(JVM)ÊÇ¿ÉÔËÐÐJava
´úÂëµÄ¼ÙÏë¼ÆËã»ú¡£Ö»Òª¸ù¾ÝJVM¹æ¸ñÃèÊö½«½âÊÍÆ÷ÒÆÖ²µ½Ìض¨µÄ¼ÆËã»úÉÏ£¬¾ÍÄܱ£Ö¤¾¹ý±àÒëµÄÈκÎJava´úÂëÄܹ»ÔÚ¸ÃϵͳÉÏÔËÐС£±¾ÎÄÊ×ÏȼòÒª½éÉÜ´ÓJavaÎļþµÄ±àÒëµ½×îÖÕÖ´ÐеĹý³Ì£¬Ëæºó¶ÔJVM¹æ¸ñÃèÊö×÷һ˵Ã÷¡£
¡¡¡¡
¡¡¡¡Ò».JavaÔ´ÎļþµÄ±àÒë¡¢ÏÂÔØ
¡¢½âÊͺÍÖ´ÐÐ
¡¡¡¡JavaÓ¦ÓóÌÐòµÄ¿ª·¢ ......
³£ÓõÄÉè¼Æģʽ·ÖΪÈçÏ 23 ÖÖģʽ£º
Abstract Factory£º
Ìṩһ¸ö´´½¨Ò»ÏµÁÐÏà¹Ø»òÏ໥ÒÀÀµ¶ÔÏóµÄ½Ó¿Ú£¬¶øÎÞÐèÖ¸¶¨Ëü
ÃǾßÌåµÄÀà¡£
Adapter£º
½«Ò»¸öÀàµÄ½Ó¿Úת»»³É¿Í»§Ï£ÍûµÄÁíÒ»¸ö½Ó¿Ú£¬Ê¹µÃÔÀ´ÓÉÓÚ½Ó¿Ú²»¼æÈݶø²»ÄÜÒ»Æð¹¤×÷µÄÄÇЩÀà¿ÉÒÔÒ»Æð¹¤×÷¡£
Bridge£º
½«
³éÏ󲿷ÖÓëËüµÄʵÏÖ²¿·Ö·ÖÀ룬ʹ֮¿ÉÒÔ¶ÀÁ¢±ä»¯¡ ......
´úÂëÑÝʾ£º
http://code.google.com/p/finance-p/source/browse/#svn/trunk
±¾ÎÄÖ÷Òª½²½âÔÚjava»·¾³ÏÂʹÓÃjQuery½øÐÐJSONÊý¾Ý´«Ë͵Ľ»»¥¹ý³Ì
²Î¿¼¸ù¾Ý×÷ÕßµÄÕËÎñ¹ÜÀíϵͳ(¸öÈË°æ) Ô´ÂëÏÂÔØ ½²½â
Ò»¡¢Ïà¹Ø¼¼Êõ¡¢¹¤¾ß¼ò½é
1¡¢¼òµ¥½éÉÜÒ»ÏÂJSON£¬JSONÊÇÒ»ÖÖÇáÁ¿¼¶µÄÊý¾Ý½»»»¸ñʽ¡£ Ò×ÓÚÈËÔĶÁºÍ±àд¡£Í¬Ê±Ò²Ò×ÓÚ»úÆ÷½âÎöº ......