尚风 发表于 2013-05-24 15:54

占位思考。

emperor9 发表于 2013-05-24 20:26

三蛋教主果然犀利,本吊泡个妞的功夫,评论就已经破千了。和谐盛世朗朗乾坤,三蛋果然是当世唯一的业界强心,一别两月,文风依旧生猛,标题依旧亮瞎,细节依旧传神,素材依旧怀旧,条理依旧叫绝,连奖励都依旧那么销魂。。。三蛋,这次您选择jvm大打出手,是否想老树发新芽?众吊觉得这个话题讨论起来是那么的荡气回肠而具有历史感,仿佛看着罗马帝国血战与斯巴达克引领者大军归来定格在银幕上,气势雄浑而不得不惊叹。。。。

send_linux 发表于 2013-05-24 20:36

emperor9 发表于 2013-05-24 20:26 static/image/common/back.gif
三蛋教主果然犀利,本吊泡个妞的功夫,评论就已经破千了。和谐盛世朗朗乾坤,三蛋果然是当世唯一的业界强心 ...

啥情况,这个是专业顶楼的么?

gvim 发表于 2013-05-25 18:41

1、在Java虚拟机编程中您是否用到硬件多核技术?
没太明白Java虚拟机硬件多核技术是怎么个意思,是否还有对应的Java虚拟机软件多核?这个是要讨论jvm直接控制cpu核心,就像linux kernel的setaffinity那样,还是仅说的就是通常的多线程thread 或者runnable?
如果是讨论jvm的话,那这个只能看jvm的对应指令集怎么处理,有没有直接面向更底层操作系统对核心的控制指令,这部分不熟悉。。。
如果是讨论multithread的话,application server天生就是多线程的体系,requestscoped 的生存期便依赖请求-响应的处理线程。 message server也常常使用thread来提高吞吐,这些
2、分享您在Java虚拟机或其他程序设计中并发编程的小技巧。
java的同步手段和其他过程语言平台没太多区别,实现起来基本都是RTS或者类似的变形,哪怕synchronized关键字也不过是java在object里面多加了一个域用于lock,有点类似C++编译器往object里添加许多东西一样。读写锁,volatile等等同步或可见性的手段和c/c++差不多,本质上没太多区别。能不用锁就不用锁,能让每个对象独立保持状态就让它耗内存。
3、抛开程序语言层面,谈谈您对多核和并发编程的看法。
个人认可erlang的并发和多处理的理念。轻量级进程由平台统一管理,有点类似过去的N:M线程模型,内核维持N个进程,应用平台对应每个内核进程维持M个轻量级进程。状态不共享,用消息进行状态迁移和处理,阿姆斯特朗说的大意是 “我们每个人都有一个自己的脑袋,我有我的想法你有你的想法,我们通过语言进行沟通”。过程语言平台一般关心的是纵向设计,设计很多模块,完成各种功能,然后通过调用和同步来完成一个任务;函数式语言平台一般关心的是横向设计,设计一个完整的任务,中间可能划分很多功能函数,然后并发的由轻量级进程执行很多这样的任务。
这不算是并发模型的区别,个人认为更是思维的区别,虽然只是一点小的差别,但就像黎曼积分划分定义域(纵向设计),勒贝格积分划分值域(横向设计)的差别一样,将数学带入一个时代。

redcap0 发表于 2013-05-25 19:38

回复 14# gvim
第一个问题,是问的有点不清不楚。




   

方兆国 发表于 2013-05-25 22:48

1、在Java虚拟机编程中您是否用到硬件多核技术?

Java编程很多底层的东西是由Java虚拟机来完成的,据说它可以自动分配认为,而且在一些资料中还听说,对于多核多线程编程中,操作系统(例如Linux)支持CPU内核的软绑定,避免了同一任务和切换处理内核是白白消耗的资源,C/C++支持CPU内核的硬绑定,而Java不是涉及底层的语言,应该很多东西还得依赖Java虚拟机

2、分享您在Java虚拟机或其他程序设计中并发编程的小技巧。

并发编程,一般用的多得就是基于Runnable接口的,很少基于Thread类
在并发编程中,有一点感触较深的经验,就是Thread.start()启动起来的线程关闭时,以前习惯性的stop(),也没有太关注这个函数是不推荐的。后来关注了一下,就在run()的循环部分加了Alive的boolean型变量,让线程和谐的停止,不再像以前那样直接stop()

3、抛开程序语言层面,谈谈您对多核和并发编程的看法。
应该更多的由操作系统来直接分配,应用程序分配的话,就涉及硬件的不同了,会导致一些没有必要的开发,或者使高性能计算机无法发挥自己的优点

方兆国 发表于 2013-05-25 23:01

send_linux 发表于 2013-05-24 20:36 static/image/common/back.gif
啥情况,这个是专业顶楼的么?

是不是有被美女看上的节奏

redcap0 发表于 2013-05-25 23:02

回复 10# redcap0


    第一问题,还补充一下。jvm基于stack执行引擎。这实jvm能很好吧java线程映射为操作系统本地线程。这也算jvm本生对多核编程的支持。

方兆国 发表于 2013-05-25 23:04

redcap0 发表于 2013-05-25 23:02 static/image/common/back.gif
回复 10# redcap0




话说多线程有内核多线程和用户多线程,不过平常好像没有听有人区分,不知道为什么,不过我还是听说过java多线程是用户多线程,而并非内核多线程

redcap0 发表于 2013-05-25 23:32

回复 19# 方兆国
现在jvm创建的线程,和你用c++创建出来的线程没区别。早期有用户线程说法是进程借助某些库实现线程调度。不是由系统内核调度。无法利用多核机器上。到现在轻量级进程的出现,内核直接调度轻量级进程也就是我们说的线程。也许jvm早期也是借助某些库来实现用户线程或者自己实现一套类似库也有可能。但现所说的java线程和别的语言创建线程是一样。
以上个人愚见。欢迎拍砖
页: 1 [2] 3 4
查看完整版本: Java虚拟机编程技术大家谈---多核和并发编程(获奖名单已公布-2013-6-7)