随笔分类 -  Java

Java学习经验
Java并行(4):线程安全前传之Singleton
摘要:1.寂寞的Singleton 如果你是一名OO程序员,Singleton的名字对你来说就不会陌生,它是GoF设计模式的一种,江湖人称“单例”的便是;即便你不是OO程序员,中国人你总该是吧?那么下面一段你应该也会背:“世界上只有一个敏感词,敏感词是敏感词的一部分,敏感词是代表敏感词的唯一合法敏感词,任何企图制造两个敏感词的企图都是注定要失败的。”说的多么好!一语道破Singleton的真谛。但是,... 阅读全文

posted @ 2010-06-13 16:12 tomsheep 阅读(2356) 评论(0) 推荐(0)

Java并行(3):可见性重访之锁、Volatile与原子变量
摘要:1. 过期数据 我们在前面讨论JMM时便已提出“同步之道,外炼‘互斥’,内修‘可见’”的法门。过去,我不注意内存可见性的时候,程序里长满了小红疙瘩: Example Source Code [http://www.cnblogs.com/tomsheep/] 上面的代码有什么问题?即使运行它千百遍,你可能也察觉不出有什么问题。但是,问题确实存在。病灶一:r线程理论上存在无限循环的可能(这里有两个... 阅读全文

posted @ 2010-06-10 19:45 tomsheep 阅读(6077) 评论(2) 推荐(0)

Java并行(2): Monitor
摘要:1. 什么是Monitor? Monitor其实是一种同步工具,也可以说是一种同步机制,它通常被描述为一个对象,主要特点是: 对象的所有方法都被“互斥”的执行。好比一个Monitor只有一个运行“许可”,任一个线程进入任何一个方法都需要获得这个“许可”,离开时把许可归还。 通常提供singal机制:允许正持有“许可”的线程暂时放弃“许可”,等待某个谓词成真(条件变量),而条件成立后,当前进程可... 阅读全文

posted @ 2010-06-09 03:46 tomsheep 阅读(17333) 评论(0) 推荐(7)

Java并行(1):JMM
摘要:1.什么是JMM? JMM即Java Memory Model,设想有这样一条赋值语句:int a = 1;而a为诸多线程所共享, JMM所关注的问题就是:“读取a的线程在何时会看到值为1的这个写入?” 2. 为什么关注JMM? 在多数情况下,即使是并发程序的程序员,也并不特别关心JMM,因为Java语言与JVM用更高抽象的“同步”语义隐藏了JMM的语义,使得程序员即便对JMM一无所知,也可以... 阅读全文

posted @ 2010-06-08 02:42 tomsheep 阅读(4502) 评论(0) 推荐(0)

Java的finally块不一定被执行
摘要:今天面试被问,Java里finally块一定会被执行吗,我说是的,面试官追问,一定吗?我纠结了,只好说,在我的认知范围内,是的。后来查了相关内容,其实是不一定的。起码有一种例外:关闭JVM(比如调用System.exit()函数) 可以看下面这位仁兄的博文: http://blog.csdn.net/sunshinestation/archive/2010/03/24/5410324.aspx 阅读全文

posted @ 2010-04-28 00:33 tomsheep 阅读(2623) 评论(0) 推荐(0)

导航