
Java
有巢鱼
这个作者很懒,什么都没留下…
展开
-
深入理解Java内存模型(一)——基础
原文链接并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态转载 2013-09-15 19:58:12 · 635 阅读 · 0 评论 -
深入理解Java内存模型(七)——总结
原文链接:http://www.infoq.com/cn/articles/java-memory-model-7?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致转载 2013-09-15 20:12:37 · 770 阅读 · 0 评论 -
多重循环的优化
代码1 for(int i=0;i<1000;i++){ for(int j=0;j<100;j++){ for(int k=0;k<10;k++){ function(i,j,k); } } }代码2for(int k=0;k<10;k++){ for(int j=0;j<100;j++){原创 2013-09-16 23:55:30 · 802 阅读 · 0 评论 -
SpringMVC提交数组时不能超过256个值
使用SpringMVC提交数组时,如果list大小超过256,就会报错。原因是DataBinder 中默认限制了list最大只能增长到256。private int autoGrowCollectionLimit = DEFAULT_AUTO_GROW_COLLECTION_LIMIT;解决方案:1)修改业务,不允许一次提交超过256条数据2)在需要的Action中添加Init原创 2013-12-09 10:45:59 · 8018 阅读 · 3 评论 -
深入理解Java内存模型(六)——final
原文链接:http://www.infoq.com/cn/articles/java-memory-model-6?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,转载 2013-09-15 20:11:23 · 771 阅读 · 0 评论 -
深入理解Java内存模型(五)——锁
原文链接:http://www.infoq.com/cn/articles/java-memory-model-5?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除转载 2013-09-15 20:09:52 · 698 阅读 · 0 评论 -
深入理解Java内存模型(四)——volatile
原文链接:http://www.infoq.com/cn/articles/java-memory-model-4?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clkvolatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解v转载 2013-09-15 20:08:43 · 673 阅读 · 0 评论 -
深入理解Java内存模型(三)——顺序一致性
原文链接:http://www.infoq.com/cn/articles/java-memory-model-3?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义转载 2013-09-15 20:06:21 · 722 阅读 · 0 评论 -
深入理解Java内存模型(二)——重排序
原文链接:http://www.infoq.com/cn/articles/java-memory-model-2?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依转载 2013-09-15 20:04:26 · 721 阅读 · 0 评论 -
解读【Java theory and practice: Managing volatility】
原文链接:Java 理论与实践: 正确使用 Volatile 变量正确使用 volatile 变量的条件您只能在有限的一些情形下使用 volatile 变量替代锁。要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件: 对变量的写操作不依赖于当前值。 就是说n = n + 1;n++;这种情况不应该使用。n = m原创 2013-09-15 18:03:26 · 1113 阅读 · 0 评论