什么是多线程编程的设计模式临界区模式?
什么是多线程编程的设计模式临界区模式?
对于双检锁,其实有多种不同的用法,有很多种用法是无论如何不会出现问题的。我最初用双检锁来获取jndi对象时,立即有人告诉我双检锁是不安全的,我笑着告诉他:是否安全我比你更有把握。static DataSource ds = null;public static DataSource getDataSource(){ if(ds == null){ synchronized(this。
getClass()){ if(ds == null) ds = xxx; } } return ds;}这样的DCL有什么安全问题呢?它仅仅是为了不做重复的劳动。一是ds本身是已经存在的对象,不是动态构造的,二是即使多次获取它也还是同一引用。
这里做的工作仅仅是不想让另一个线程多做在JNDI上再查找一次的工作,因为查找本身是耗时的,与其让另一个线程再查找还不如把它阻塞在synchronized外面什么也不做。事实上即使是再查找一次两次获得的还是相同的引用,而且是已经构造好,不存在初始化问题的对象。
DCL会有什么安全问题?所以不要一看到双检锁就认为它有安全问题。有些时候它完全可以非常好地工作。只是你要理解它的安全问题到底在哪儿?DCL到底有什么问题?DCL的安全性最初被公开的时候在2001年JavaWorld。其实那个例子在那个时候已经是错误的。
影响了后面几代人都跟着错误。有时候我甚至不敢相信一些非常简单的问题因为放在权威的地方就没有人敢去责疑。最初的问题提出者在这儿:http://www。javaworld。com/javaworld/jw-02-2001/jw-0209-double。
html例子是:class SomeClass { private Resource resource = null; public Resource getResource() { if (resource == null) { synchronized { if (resource == null) resource = new Resource(); } } return resource; }}。
答:在设计模式2中我们看到,在entity bean和struct之间有很多重复的代码比如同样的字段声明(对应数据库中的表列)。如果让entity bean从结构继...详情>>
问:同事ip:10.101.107.28 我的IP:10.101.104.23我们在...
答:你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到对方的主机。让她把文件夹共享出来就可以。 如果不是WINDOWS域,那得看你们是不是在一个...详情>>
问:数据结构顺序表的建立,可定义顺序表 #define maxnum elemtyp...
答:打开VC ,然后点击新建,出来界面之后选择Win32 Console Application并输入工程的名称和选择项目的位置,然后出现“一个空工程”,在点击“...详情>>