Java多线程发展简史

楼主
Java多线程发展简史
[P][B]引言[/B][/P][P]首先问这样一个问题,如果提到Java多线程编程,你会想到什么?[/P][UL][LI]volatile、synchronized关键字? [LI]竞争和同步? [LI]锁机制? [LI]线程安全问题? [LI]线程池和队列? [/LI][/UL][P]好吧,请原谅我在这里卖的关子,其实这些都对,但是又不足够全面,如果我们这样来谈论Java多线程会不会全面一些:[/P][OL][LI]模型:JMM(Java内存模型)和JCM(Java并发模型) [LI]使用:JDK中的并发包 [LI]实践:怎样写线程安全的代码 [LI]除错:使用工具来分析并发问题 [LI]…… [/LI][/OL][P]可是,这未免太死板了,不是么?[/P][P]不如换一个思路,我们少谈一些很容易查到的语法,不妨从历史的角度看看Java在多线程编程方面是怎样进化的,这个过程中,它做了哪些正确的决定,犯了哪些错误,未来又会有怎样的发展趋势?[/P][P]另外,还有一点要说是,我希望通过大量的实例代码来说明这些事情。Linus说:“Talk is cheap, show me the code.”。下文涉及到的代码我已经上传,可以在此打包下载。[/P][P][B]诞生[/B][/P][P]Java的基因来自于1990年12月Sun公司的一个内部项目,目标设备正是家用电器,但是C++的可移植性和API的易用性都让程序员反感。旨在解决这样的问题,于是又了Java的前身Oak语言,但是知道1995年3月,它正式更名为Java,才算Java语言真正的诞生。[/P][P][B]JDK 1.0[/B][/P][P]1996年1月的JDK1.0版本,从一开始就确立了Java最基础的线程模型,并且,这样的线程模型再后续的修修补补中,并未发生实质性的变更,可以说是一个具有传承性的良好设计。[/P][P]抢占式和协作式是两种常见的进程/线程调度方式,操作系统非常适合使用抢占式方式来调度它的进程,它给不同的进程分配时间片,对于长期无响应的进程,它有能力剥夺它的资源,甚至将其强行停止(如果采用协作式的方式,需要进程自觉、主动地释放资源,也许就不知道需要等到什么时候了)。Java语言一开始就采用协作式的方式,并且在后面发展的过程中,逐步废弃掉了粗暴的stop/resume/suspend这样的方法,它们是违背协作式的不良设计,转而采用wait/notify/sleep这样的两边线程配合行动的方式。[/P][P]一种线程间的通信方式是使用中断:[/P]

电脑版 Page created in 0.0625 seconds with 4 queries.