免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

Java虚拟机编程技术大家谈---多核和并发编程(获奖名单已公布-2013-6-7) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-05-24 15:54 |只看该作者
占位思考。

论坛徽章:
4
CU十二周年纪念徽章
日期:2013-10-24 15:41:34丑牛
日期:2014-02-26 16:47:00技术图书徽章
日期:2014-03-06 15:39:16技术图书徽章
日期:2014-04-24 15:56:22
12 [报告]
发表于 2013-05-24 20:26 |只看该作者
三蛋教主果然犀利,本吊泡个妞的功夫,评论就已经破千了。和谐盛世朗朗乾坤,三蛋果然是当世唯一的业界强心,一别两月,文风依旧生猛,标题依旧亮瞎,细节依旧传神,素材依旧怀旧,条理依旧叫绝,连奖励都依旧那么销魂。。。三蛋,这次您选择jvm大打出手,是否想老树发新芽?众吊觉得这个话题讨论起来是那么的荡气回肠而具有历史感,仿佛看着罗马帝国血战与斯巴达克引领者大军归来定格在银幕上,气势雄浑而不得不惊叹。。。。

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
13 [报告]
发表于 2013-05-24 20:36 |只看该作者
emperor9 发表于 2013-05-24 20:26
三蛋教主果然犀利,本吊泡个妞的功夫,评论就已经破千了。和谐盛世朗朗乾坤,三蛋果然是当世唯一的业界强心 ...


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

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
14 [报告]
发表于 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个轻量级进程。状态不共享,用消息进行状态迁移和处理,阿姆斯特朗说的大意是 “我们每个人都有一个自己的脑袋,我有我的想法你有你的想法,我们通过语言进行沟通”。过程语言平台一般关心的是纵向设计,设计很多模块,完成各种功能,然后通过调用和同步来完成一个任务;函数式语言平台一般关心的是横向设计,设计一个完整的任务,中间可能划分很多功能函数,然后并发的由轻量级进程执行很多这样的任务。
这不算是并发模型的区别,个人认为更是思维的区别,虽然只是一点小的差别,但就像黎曼积分划分定义域(纵向设计),勒贝格积分划分值域(横向设计)的差别一样,将数学带入一个时代。

论坛徽章:
0
15 [报告]
发表于 2013-05-25 19:38 |只看该作者
回复 14# gvim
第一个问题,是问的有点不清不楚。




   

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
16 [报告]
发表于 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、抛开程序语言层面,谈谈您对多核和并发编程的看法。

应该更多的由操作系统来直接分配,应用程序分配的话,就涉及硬件的不同了,会导致一些没有必要的开发,或者使高性能计算机无法发挥自己的优点

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
17 [报告]
发表于 2013-05-25 23:01 |只看该作者
send_linux 发表于 2013-05-24 20:36
啥情况,这个是专业顶楼的么?


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

论坛徽章:
0
18 [报告]
发表于 2013-05-25 23:02 |只看该作者
回复 10# redcap0


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

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
19 [报告]
发表于 2013-05-25 23:04 |只看该作者
redcap0 发表于 2013-05-25 23:02
回复 10# redcap0


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

论坛徽章:
0
20 [报告]
发表于 2013-05-25 23:32 |只看该作者
回复 19# 方兆国
现在jvm创建的线程,和你用c++创建出来的线程没区别。早期有用户线程说法是进程借助某些库实现线程调度。不是由系统内核调度。无法利用多核机器上。到现在轻量级进程的出现,内核直接调度轻量级进程也就是我们说的线程。也许jvm早期也是借助某些库来实现用户线程或者自己实现一套类似库也有可能。但现所说的java线程和别的语言创建线程是一样。
以上个人愚见。欢迎拍砖
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP