The Programming Language Tips[5]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 chelsea 的 blog

我推荐的解决方法

参考类库的实现,提供没有同步的原始类,及有同步的代理类;早期的jdk中vector及hashtable都是同步的类,新的arraylist及hashmap都不是同步的,collections提供了静态方法返回同步代理;当在多线程环境中需要更改集合时,使用代理类

[c#,多线程环境中使用同步代理的客户类代码]

     public class someclass {

         public someclass(ilist source){

              attrs = arraylist.synchronized(source);

         }

         public void add(string name){

              attrs.add(name);

         }

         public void remove(string name){

              attrs.remove(name);

         }

     }

[c#,单线程环境中使用同步代理的客户类代码]

     public class otherclass{

         public otherclass(ilist source){

              attrs = source;

         }

         public void add(string name){

              attrs.add(name);

         }

         public void remove(string name){

              attrs.remove(name);

         }

     }

[java,多线程环境中使用同步代理的客户类代码]

     public class someclass {

         public someclass (list source){

              attrs = collections.synchronizedlist(source);

         }

         public void add(string name){

              attrs.add(name);

         }

     }

[java,单线程环境中使用同步代理的客户类代码]

     public class otherclass{

         public otherclass(list source){

              attrs = source;

         }

         public void add(string name){

              attrs.add(name);

本文关键:The Programming Language Tips
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top