JavaÏß³ÌÖ®Read Write Lock Pattern
Read-Write Lock PatternµÄ²ÎÓëÕߣº
1. Reader£¨¶ÁÈ¡Õߣ©²ÎÓëÕß
Reader²ÎÓëÕß»á¶ÔSharedResource²ÎÓëÕß½øÐÐread¡£
2. Writer£¨Ð´ÈëÕߣ©²ÎÓëÕß
Writer²ÎÓëÕß»á¶ÔSharedResource²ÎÓëÕß½øÐÐwrite¡£
3. SharedResource£¨¹²Ïí×ÊÔ´£©²ÎÓëÕß
SharedResource²ÎÓëÕß´ú±íReaderÓëWriterËù¹²ÏíµÄ×ÊÔ´¡£
SharedResource²ÎÓëÕß»áÌṩ²»»á¸Ä±äÄÚ²¿×´Ì¬µÄ²Ù×÷£¨read£©ºÍ»á¸Ä±äÄÚ²¿×´Ì¬µÄ²Ù×÷£¨write£©¡£
4. ReadWriteLock£¨¶ÁдÓÃËø¶¨£©²ÎÓëÕß
ReadWriteLock²ÎÓëÕßÌṩÁ˶ÔSharedResource²ÎÓëÕß½øÐÐread²Ù×÷Óë½øÐÐwrite²Ù×÷ʱÐèÒªµÄËø¶¨¡£
ΪÁËÍê³Éread²Ù×÷£¬ÌṩÁËreadLockÓëreadUnlock¡£
ΪÁËÍê³Éwrite²Ù×÷£¬ÌṩÁËwriteLockºÍwriteUnlock¡£
------------------------------
Read-Write Lock PatternÊʺ϶ÁÈ¡±ÈдÈë´ÎÊýƵ·±µÄÇé¿ö¡£
Read-Write Lock PatternÀîÓÀÀÖ¶ÁÈ¡²Ù×÷±Ë´ËÖ®¼ä²»»á³åÍ»µÄÌØÐÔ£¬Ê¹µÃ¶à¸öReader²ÎÓëÕß¿ÉÒÔͬʱ½øÐÐread£¬ÒÔÌáÉý³ÌÐòµÄÐÔÄÜ¡£
²»¹ýµ±Ð´Èë²Ù×÷ƵÂʽϸßʱ£¬Writer²ÎÓëÕ߻ᾳ£×èÀ¹Reader²ÎÓëÕßµÄread²Ù×÷µÄ½øÐУ¬ÕâÑùÒ²¾ÍÎÞ·¨Õ¹ÏÖRead-Write Lock PatternµÄÓŵãÁË¡£
------------------------------
Ò»¸ö ReadWriteLock²ÎÓëÕßµÄʵÏÖ£º
public final class ReadWriteLock{
private int readingReaders = 0; // ʵ¼ÊÕýÔÚ¶ÁÈ¡µÄÏß³ÌÊý
private int waitingWriters = 0; // ÕýÔڵȴýдÈëµÄÏß³ÌÊý
private int writingWriters = 0; // ʵ¼ÊÕýÔÚдÈëµÄÏß³ÌÊý
private boolean preferWriter = true; // ÊÇ·ñдÈëÓÅÏÈ
public synchronized void readLock() throws InterruptedException{
while(writingWriters >0 ||(preferWriter && waitingWriters >0)){
wait();
}
readingReaders++;
}
public synchronized void readUnlock() throws InterruptedException{
readingReaders--;
notifyAll();
}
public synchronized void writeLock() throws InterruptedException{
waitingWriters++;
try{
while(readingReaders>0||writingWriters>0){
wait();
}
}finally{
waitingWriters--;
}
writingWriters++;
}
public synchronized void writeUnlock() throws InterruptedException{
writingWriters--;
noti
Ïà¹ØÎĵµ£º
JAVA·´Éä»úÖÆ
¸ÅÊö
¡¡¡¡ÓÐʱºòÎÒÃÇ˵ij¸öÓïÑÔ¾ßÓкÜÇ¿µÄ¶¯Ì¬ÐÔ£¬ÓÐʱºòÎÒÃÇ»áÇø·Ö¶¯Ì¬ºÍ¾²Ì¬µÄ²»Í¬¼¼ÊõÓë×÷·¨¡£ÎÒÃÇÀÊÀÊÉϿڶ¯Ì¬°ó¶¨£¨dynamic binding£©¡¢¶¯Ì¬Á´½Ó£¨dynamic linking£©¡¢¶¯Ì¬¼ÓÔØ£¨dynamic loading£©µÈ¡£È»¶ø“¶¯Ì¬”Ò»´ÊÆäʵûÓоø¶Ô¶øÆÕ±éÊÊÓõÄÑϸñ¶¨Ò壬ÓÐʱºòÉõÖÁÏñ¶ÔÏóµ¼Ïòµ±³õ±»µ¼Èë±à³ ......
java³£ÓÃÀàµÄʹÓ÷½·¨
Interger£ºÕûÊýÀàÐÍ
£±¡¢ÊôÐÔ¡£
static int MAX_VALUE£º·µ»Ø×î´óµÄÕûÐÍÊý£»
static int MIN_VALUE£º·µ»Ø×îСµÄÕûÐÍÊý£»
static Class TYPE £º·µ»Øµ±Ç°ÀàÐÍ¡£
Àý×Ó£º
´úÂë:
System.out.println("Integer.MAX_VALUE: " + Integer.MAX_VALUE );
½á¹ûΪ£ºInteger.MAX_VALUE: 2147483647
&nb ......
javaʵÏֵľµäµÝ¹éËã·¨ÈýÀý
Ò»¡¢Ð´×÷´ËÎĵÄÔÒò£º
¡¡¡¡Ñ§¹ý³ÌÐòÉè¼ÆµÄÅóÓѶ¼ÖªµÀ£¬´æÔÚ×Ôµ÷ÓõÄËã·¨³Æ×÷µÝ¹éËã·¨¡£ µÝ¹éÍùÍùÄܸøÎÒÃÇ´øÀ´·Ç³£¼ò½à·Ç³£Ö±¹ÛµÄ´úÂëÐÎÊÆ£¬´Ó¶øÊ¹ÎÒÃǵıàÂë´ó´ó¼ò»¯£¬È»¶øµÝ¹éµÄ˼άȷʵºÜÎÒÃǵij£¹æË¼Î¬ÏàÄæµÄ£¬ÎÒÃÇͨ³£¶¼ÊÇ´ÓÉ϶øÏµÄ˼άÎÊÌ⣬ ¶øµÝ¹éÇ÷ÊÆ´ÓÏÂÍùÉϵĽøÐÐ˼ά£¬ÕýÓÉÓÚ´Ë£ ......
ÔÌùÄÚÈÝÇë¼û: http://topic.csdn.net/u/20100116/17/6a204504-9e70-435f-be55-f0630ed12fdf.html?seed=942806558&r=62778073#r_62778073
Çë´óÅ£Ö¸Õý.
²úÆ·Àà:
package selfimpr.producerCustomer;
/**
* ²úÆ·
* @author selfimpr
* @blog http://blog.csdn.net/lgg201
* @email lgg860911@yahoo.com.cn
......
public class DES {
// ÉùÃ÷³£Á¿×Ö½ÚÊý×é
private static final int[] IP = {
58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54,
......