java ×Ô¼ºÊµÏÖ ReadWriteLock £¨Ò»£©
¶àÏ̶߳Áдͬһ¸ö¶ÔÏóµÄÊý¾ÝÊÇºÜÆÕ±éµÄ£¬Í¨³££¬Òª±ÜÃâ¶Áд³åÍ»£¬±ØÐë±£Ö¤ÈκÎʱºò½öÓÐÒ»¸öÏß³ÌÔÚдÈ룬ÓÐÏß³ÌÕýÔÚ¶ÁÈ¡µÄʱºò£¬Ð´Èë²Ù×÷¾Í±ØÐëµÈ´ý¡£¼òµ¥Ëµ£¬¾ÍÊÇÒª±ÜÃâ“д-д”³åÍ»ºÍ“¶Á-д”³åÍ»¡£µ«ÊÇͬʱ¶ÁÊÇÔÊÐíµÄ£¬ÒòΪ“¶Á-¶Á”²»³åÍ»£¬¶øÇҺܰ²È«¡£
ҪʵÏÖÒÔÉϵÄReadWriteLock£¬¼òµ¥µÄʹÓÃsynchronized¾Í²»ÐУ¬ÎÒÃDZØÐë×Ô¼ºÉè¼ÆÒ»¸öReadWriteLockÀ࣬ÔÚ¶Á֮ǰ£¬±ØÐëÏÈ»ñµÃ“¶ÁËø”£¬Ð´Ö®Ç°£¬±ØÐëÏÈ»ñµÃ“Ð´Ëø”¡£¾ÙÀý˵Ã÷£º
DataHandler¶ÔÏó±£´æÁËÒ»¸ö¿É¶ÁдµÄchar[]Êý×飺
package com.crackj2ee.thread;
public class DataHandler {
// store
data:
private
char[] buffer = "AAAAAAAAAA".toCharArray();
private
char[] doRead() {
char[] ret = new char[buffer.length];
for(int i=0; i<buffer.length; i++) {
ret[i] = buffer[i];
sleep(3);
}
return ret;
}
private void
doWrite(char[] data) {
if(data!=null) {
buffer = new char[data.length];
for(int i=0; i<buffer.length; i++) {
buffer[i] = data[i];
sleep(10);
}
}
}
private void
sleep(int ms) {
try {
&nb
Ïà¹ØÎĵµ£º
GRASPģʽ:General Responsibility Assignment Software Patterns£ºÍ¨ÓÃÔðÈηÖÅäÈí¼þģʽ
ÀïÃæÖØÒªµÄ¸ÅÄîÊÇÔðÈΣ¬ÔðÈÎÊÇÀà¼äµÄÒ»ÖÖºÏÔ¼»òÊÇÒåÎñ£¬¿ÉÒÔϸ·ÖΪÁ½²¿·Ö£¬Óù«Ê½±íʾÈçÏ£º
ÔðÈÎ = ÖªµÀÔðÈÎ + ÐÐΪÔðÈΣ¨ÕâÀïÃæËÆºõ´æÔÚ¸ÅÄîµÄÑ»·¶¨Ò壩
×¢£ºÓÃͨË׵ϰÀ´½²£¬ÔðÈξÍÊÇÒ»¸öÀàÖªµÀÒª×öʲô£¬²¢ÇÒÄܹ»×öʲô¡£
· ......
Ò»°ãÎÒÃÇÔÚjavaÖÐÔËÐÐÆäËüÀàÖеķ½·¨Ê±£¬ÎÞÂÛÊǾ²Ì¬µ÷Ó㬻¹ÊǶ¯Ì¬µ÷Ó㬶¼ÊÇÔÚµ±Ç°µÄ½ø³ÌÖÐÖ´Ðеģ¬Ò²¾ÍÊÇ˵£¬Ö»ÓÐÒ»¸öjavaÐéÄâ»úʵÀýÔÚÔËÐС£¶øÓеÄʱºò£¬ÎÒÃÇÐèҪͨ¹ýjava´úÂëÆô¶¯¶à¸öjava×Ó½ø³Ì¡£ÕâÑù×öËäȻռÓÃÁËһЩϵͳ×ÊÔ´£¬µ«»áʹ³ÌÐò¸ü¼ÓÎȶ¨£¬ÒòΪÐÂÆô¶¯µÄ³ÌÐòÊÇÔÚ²»Í¬µÄÐéÄâ»ú½ø³ÌÖÐÔËÐеģ¬Èç¹ûÓÐÒ»¸ö½ø³Ì·¢Éú ......
SQL×¢ÈëÊÇ×î³£¼ûµÄ¹¥»÷·½Ê½Ö®Ò»,Ëü²»ÊÇÀûÓòÙ×÷ϵͳ»òÆäËüϵͳµÄ©¶´À´ÊµÏÖ¹¥»÷µÄ,¶øÊdzÌÐòÔ±ÒòΪûÓÐ×öºÃÅжÏ,±»²»·¨
Óû§×êÁËSQLµÄ¿Õ×Ó,ÏÂÃæÎÒÃÇÏÈÀ´¿´ÏÂʲôÊÇSQL×¢Èë:
±ÈÈçÔÚÒ»¸öµÇ½½çÃæ,ÒªÇóÓû§ÊäÈëÓû§ÃûºÍÃÜÂë:
& ......
¼øÓÚÍøÉ϶ÔJavaµÄ¶ÑÕ»Çø·Ö£¬ÖÚ˵·×ç¡£¬ÓеİÑC++µÄ¶ÑÕ»Ò²»ì½øÀ´£¬ÓеÄûÓзÖÇåStack£¬HeapµÄÖÐÎÄ·Ò룬¸ãµÃÎÒ°ÑStackµ±×÷¶Ñ£¬Heapµ±×÷Õ»£¬»ìÂÒÁË£¡×òÌì²Î¼ÓÒ»ÍâÆóµÄ±ÊÊÔ£¬Ñ¡ÔñÓ¢ÎÄ´ð°¸Ê±£¬Ñ¡´íÁË£¬ÖªµÀ´ð°¸ÊǶѣ¬È´Ñ¡ÔñÁËStack£¡½ñÌ죬¾ö¶¨°ÑÁ½ÕßÇø·ÖÇå³þ£¡
&nbs ......
package com.xiaobian;
public class BubbleSort {
//ðÅÝÅÅÐò
public static void bubbleSort(int[] data){
&n ......