JavaÏß³Ìͬ²½Ê¾Àý
ÎÄÕÂÓÃʵÀý´úÂëչʾÁËJavaÖжàÏ̷߳ÃÎʹ²Ïí×ÊÔ´
ʱÏß³Ìͬ²½
µÄÖØÒªÐÔ¡£
·Ö±ðͨ¹ýÔÚÁ½¸öÏß³ÌÖÐͬʱ·ÃÎÊ(µ÷ÓÃget_id*·½·¨)¾¹ýͬ²½´¦Àí(lock¼°Synchronized)µÄ¹²Ïí×ÊÔ´(tmp)¼°Î´¾¹ýͬ²½´¦ÀíµÄ¹²Ïí×ÊÔ´(tmp)À´ËµÃ÷ͬ²½´¦ÀíµÄµÄ×÷Óá£
mainÖзÖÁ½²¿·Ö:
1£©Ç°°ë²¿·Ö£¬non-synchronization²¿·ÖÓÃÀ´²âÊÔûÓÐ×öͬ²½´¦ÀíµÄ´úÂë¶Î£¬ÔËÐнá¹ûÓ¦¸ÃÊÇ
After thread #1 call get_id(), id=1
After thread #2 call get_id(), id=1
2£©ºó°ë²¿·Ö£¬synchronization²¿·ÖÓÃÀ´²âÊÔ×ö¹ýͬ²½´¦ÀíµÄ´úÂë¶Î£¬ÔËÐнá¹ûÓ¦¸ÃÊÇ
After thread #1 call get_id(), id=1
After thread #2 call get_id(), id=2
²Î¿¼×ÊÁÏ£º
-1-¹ØÓÚsleepºÍwaitÇø±ð¿´Ò»ÏÂÕâ¸ö: http://wurd.javaeye.com/blog/174563¡£
-2-¹ØÓÚsynchronized¿ÉÒÔ¿´Ò»ÏÂÕâÆª£ºhttp://www.wangchao.net.cn/bbsdetail_148670.html£¬±È½ÏÃ÷ÁË¡£
-3-¹ØÓÚJavaÏß³Ìͬ²½¿ÉÒÔ¿´Ò»ÏÂÕâ¸ö£ºhttp://lavasoft.blog.51cto.com/62575/27069£¬ºÜÏêϸ¡£
/********************************************************************************
*FileName: Thread_sync.java
*Date: 2010/01/12
*Intention: Test thread synchronization tools in java.
*Input:
*Output:
* in non-synchronization version
* After thread #1 call get_id(), id=1
* After thread #2 call get_id(), id=1
* in synchronization version
* After thread #1 call get_id(), id=1
* After thread #2 call get_id(), id=2
*
*DevelopmentEnv: Netbeans 6.8, Jdk 1.6.
********************************************************************************/
class Counter
{
private final static Object lock = new Object();
private static int count = 0;
public int get_id()
{
int tmp = count;
++tmp;
try
{
Thread.sleep(1000);
}
catch(Exception e)
{
}
count = tmp;
return count;
}
public int get_id_sync()
{
synchronized(lock)
{
int tmp = count;
++tmp;
try
{
Thread.sleep(1000);
}
catch(Exception e)
{
}
count = tmp;
}
return count;
}
}
public class Thread_sync
{
private static int cnt = 0;
static class Rab implements Runnable
{
Ïà¹ØÎĵµ£º
1. MD5¼ÓÃÜ£¬³£ÓÃÓÚ¼ÓÃÜÓû§ÃûÃÜÂ룬µ±Óû§Ñé֤ʱ¡£
¡¡ ¡¡protected byte[] encrypt(byte[] obj) ...{
¡¡¡¡try ...{
¡¡¡¡MessageDigest md5 = MessageDigest.getInstance("MD5");
¡¡¡¡md5.update(obj);
¡¡¡¡return md5.digest();
¡¡¡¡} catch (NoSuchAlgorithmException e) ...{
¡¡¡¡e.printStackTrace();
¡ ......
×î½üÔÚÓÃÈóǬÔÚ×öһЩwebÏîÄ¿µÄ±¨±í£¬ÆäÖÐÓÐÒ»¸öÅúÁ¿´òÓ¡µÄ±¨±í¡£ÐèÒª°Ñ²ÎÊý´«µ½±¨±íÀµ±°ÑÖÐÎÄ´«µ½ÀïÃæÊ±×ÜʱÂÒÂ룬²ÉÓÃÁ˸÷ÖÖתÂ뷽ʽ£¬Ò²Ã»×ª¹ýÀ´£¬ÔÎ.........
Ϊʲô»áÓÐÕâô¶àµÄ±àÂ룬ºÃÍ·ÌÛѽ... ......
=====================================
ǰÑÔ
ÔÚ̫ԾÀúÁËÒ»ÄêµÄÍ´¿à¿ª·¢Ö®ºó£¬ÏîÄ¿ÒѾÈÕÇ÷Îȶ¨£¬½ÓÏÂÀ´µÄ¹¤×÷¾ÍÊÇÄÃÏÖÓеĴúÂëµ½ÆäËûµÄÊ¡ÊнøÐÐʵʩ¡¢È»ºó×öһЩ±¾µØ»¯¿ª·¢¡£ÈÕ×ÓÏà¶ÔÇáËÉÁËÐí¶à£¬ÓÚÊÇ¿ÉÒÔ³é³öʱ¼äÀ´ÎÂϰһÏ»ù´¡µÄ¼¼Êõ֪ʶ£¬¸ø×Ô¼ºÁÐÁËÒ»¸ö¸´Ï°Ìá¸Ù£¬ÕâÒ²ÊÇÒ»¸öjava³ÌÐòÔ±ËùÓ¦¸ÃÕÆÎÕµÄ֪ʶÂöÂç¡£
=== ......
1.Ê×ÏÈдһ¸öȨÏÞ¹ýÂËfilterÀà,ʵÏÖFilter½Ó¿Ú
/*Ê×ÏÈдһ¸öȨÏÞ¹ýÂËfilter*/
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import ......