当前位置:首页 » 编程语言 » java多核

java多核

发布时间: 2022-06-23 21:58:50

java教程之Java应用如何适应多核环境

通过使用JDK 6.0的新特征,就可以让它们能够并行化,让客户端应用程序利用多核处理器的优势。以使用单核JDK数组排序算法为例,这篇文章略述实现细节,重点讲解并行算法。在双核的机器上,即使一个简单的实现结果能够加速35%。 摩尔定律失效 知道一两年前,API提供商能够简单的依靠一个经验观测值做出判断,这个经验观测值是由Gordon Moore在1965始创的,他是Intel创始人之一。摩尔定律指出每18到24个月集成电路上的晶体管的数量至少要翻一番。对于软件开发者来说,这就意味着你写了一个程序,当时运行在一个单核CPU上,过年两年后,你的这个相同的程序运行在两年后的单核CPU上速度肯定会快两倍。只要操作系统向后兼容的话,你甚至不需要编译你的程序。 但是,在最近两年,硬件制造商开始找到产品的瓶颈了,不去非常费成本的提供单个芯片的计算能力。他们的解决方案就是首先就是服务器市场和客户端市场,在同一个芯片上放置多个处理器,并不是去增加每个处理器的处理速度。对于软件世界来说,这就意味着你不能“坐享其成,与己无关”了。如果你的程序有一个简单的顺序流程,那么就不能享受底层多核硬件带来的优点了。这个道理同样适用于你正在写的那些程序和一些语言的核心语言库。

② java能利用多核cpu吗

java线程可以在运行在多个cpu核上。

"在具有多个处理器的机器上,每一个处理器运行一个线程,可以有多个线程并行运行。当然,如果线程的数目多于处理器的数目,调度器依然采用时间片机制"。
现代os都将线程作为最小调度单位,进程作为资源分配的最小单位。 在windows中进程是不活动的,
只是作为线程的容器。

也就是说,java中的所有线程确实在JVM进程中,但是CPU调度的是进程中的线程。

"在具有多个处理器的机器上,每一个处理器运行一个线程,可以有多个线程并行运行。当然,如果线程的数目多于处理器的数目,调度器依然采用时间片机制"。这句话足以用来反驳那个出问题的人了,因为他的答案本身就是错的。

更详细的信息可以参见有关Java虚拟机实现的“并发”系列讲解,基本上每本关于Java虚拟机有关的书籍以及官方文档都会讲到JVM如何实现线程的几种方式。 基于系统内核,基于用户线程等等实现。JVM中的线程实现是本地化的~ 本地化的意思就是与平台有关了,尽管与平台有关,但是线程调度,仍旧是最佳高效的方式,有资料曾说过:线程的创建销毁与调度的开销是进程的三十分之一。

③ java多线程问题多核cpu遇上java多线程,求解释,代码如下:

以及成为一个线程的三种方法。最后补充一点:注意当今多核CPU下Java多线程会出现问题。JVM规范里明确指出:JVM的多线程是不确定的(真正意义上的多线程),

④ Java:关于多线程与多核,如何将多核都利用上呢

你自己写个多线程的程序跑起来,把任务管理器打开,打开“性能”选项卡,观察你就发现了,其实不管你你的是4核,8核,1024核,基本都是在一个格子里有动作的,跟理论上几个线程就在几个核里跑不一致的,操作系统自身的设计导致的。核虽然多,县城虽然多,但是还没有真正设计成几个线程就在几个核里跑的算法模式。至于怎么都利用上不是你说了算,os说了算。别想太多。

⑤ java 多核处理器下会发生同时获取对象锁的情况吗

对象锁类锁
对象锁
当一个对象中有synchronized method或synchronized block的时候调用此对象的同步方法或进入其同步区域时,就必须先获得对象锁。如果此对象的对象锁已被其他调用者占用,则需要等待此锁被释放
同步静态方法/静态变量互斥体
由于一个class不论被实例化多少次,其中的静态方法和静态变量在内存中都只由一份。所以,一旦一个静态的方法被申明为synchronized。此类所有的实例化对象在调用此方法,共用同一把锁,我们称之为类锁。一旦一个静态变量被作为synchronized block的mutex。进入此同步区域时,都要先获得此静态变量的对象锁
类锁
由上述同步静态方法引申出一个概念,那就是类锁。其实系统中并不存在什么类锁。当一个同步静态方法被调用时,系统获取的其实就是代表该类的类对象的对象锁
在程序中获取类锁
可以尝试用以下方式获取类锁
synchronized (xxx.class) {}
synchronized (Class.forName("xxx")) {}
同时获取2类锁
同时获取类锁和对象锁是允许的,并不会产生任何问题,但使用类锁时一定要注意,一旦产生类锁的嵌套获取的话,就会产生死锁,因为每个class在内存中都只能生成一个Class实例对象。

⑥ Java中多线程在多核CPU中是真的同时执行吗

如果是单核CPU,在某个时间点只能执行一个线程,但是多核CPU你可以理解为多个单核CPU,当然可以同时执行多个线程啦。

⑦ java多核多线程

java可以实现多线程.
但是不能判断某个线程再哪个CPU上执行.
java实现多线程有两种方法。
一种是继承Thread类
class MyThread extends Thread{
@override
public void run(){
//要执行的代码
}
}
调用时,使用new MyThread().start()就可以了

另一种方法是实现Runnable接口
class MyThread implements Runnable{
@override
public void run(){
//要执行的代码
}
}
调用方法:
new Thread(new MyThread()).start()

⑧ Java7真的为多核革命做好准备了吗

Java7真的为多核革命做好准备了吗???!!!
2008-03-28 14:34 by 资深记者 kyo100900
http://www.iteye.com/news/1686
Henrik Engström【注1】却不这么认为!在他最近发表的blog中,他强调“新的编程语言在对待多核的问题上,必须内置对多核的支持而不是增加一些像API这样的特性就能搞定的”。
在Java早期的时候,我们哪里会知道Java编程模型会受如今汹涌澎湃的并发与多核编程影响。但随着JVM本身的不断进化,支持了很多语言,比如说Scala,可以做为并发编程的选择。如果提升应用程序的性能确实是个问题的话,那么也许Henrik Engström是对的,他主张I/O和内存管理会是真正的瓶颈,而不是你多加上几个处理器就可以解决的。他引用了Brian Goetz【注2】的文章《Java理论与实践:应用fork-join框架》,里面谈到了即将加入到Java7的java.uti.concurrent包里的新框架——fork-join:

“服务器应用程序通常会运行比可用的处理器数量多很多的并发线程或请求。这是因为在大多数服务器应用程序中,对请求的处理包含大量 I/O,这些 I/O 不会占用太多的处理器(所有网络服务器应用程序都会处理许多的套接字 I/O,因为请求是通过套接字接收的;也会处理大量磁盘(或数据库)I/O)。如果每个任务的 90% 的时间用来等待 I/O 完成,您将需要 10 倍于处理器数量的并发任务,才能充分利用所有的处理器。随着处理器数量增加,可能没有足够的并发请求保持所有处理器处于繁忙状态。但是,仍有可能使用并行性来改进另一种性能度量:用户等待获取响应的时间。”

这其实回避了问题的实质,我们想知道如何将所有新加入的处理器为我所用,做为多核革命?

而与此同时Daniel Lemire【注3】发表《计算机编程的多核革命还无法到来》对多核编程持否定态度。实际上他强调的是对大多数大型应用程序来说,最大的性能瓶颈实际上在数据层,而且,很多性能难题是可以通过框架(比如说MapRece和Hadoop)和存储分区解决的。

总之,Java7勇敢的迈向由多核革命所引导的新的“并行”领域。同时,随着Microsoft和Intel在这方面的投资(最近两家公司宣布共投资 2亿美元于并行计算.),你会发现汹涌的潮汐即将淹地平线(暗指多核革命的到来)。

【注1】
Henrik Engström从1997年开始一直从事专业软件开发,精通OOP,设计模式,Java SE/EE,应用服务器和SOA,精通各个n-层架构。对Jboss,Weblogic,Websphere服务器有非常深刻的理解。

【注2】

Brian Goetz 作为一名专业软件开发人员已经 20 年了。他是 Sun Microsystems 的高级工程师,并且效力于多个 JCP 专家组。Brian 的着作 Java Concurrency In Practice 在 2006 年 5 月由 Addison-Wesley 出版。请参阅 Brian 在流行的业界出版物上 已发表和即将发表的文章。

【注3】
加拿大的新不伦瑞克大学教授

⑨ java 如何充分利用多核CPU

用Thread就可以了。系统会自动把Thread分配到不同的核上运行。

热点内容
加密卡怎么模拟 发布:2025-03-18 02:02:08 浏览:271
我的世界服务器水桶搭建 发布:2025-03-18 02:01:21 浏览:334
微信存储到sd卡 发布:2025-03-18 01:34:29 浏览:969
eclipse的自动编译 发布:2025-03-18 01:34:29 浏览:368
可以上传视频网站 发布:2025-03-18 01:29:17 浏览:933
mysql密码忘记了怎么 发布:2025-03-18 01:23:00 浏览:859
java与oracle 发布:2025-03-18 01:18:05 浏览:706
怎么给win7电脑文件加密 发布:2025-03-18 01:10:41 浏览:990
python生成随机数 发布:2025-03-18 01:10:40 浏览:96
手机存储卡怎么设置 发布:2025-03-18 01:04:26 浏览:214