A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 724681149 黑马帝   /  2011-10-16 15:14  /  5302 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       日常我们教学将的都是单核CPU下开启的多线程的问题。而我们现在用的电脑越来越高效,配置越来越好,出现了多核CPU。那么在多核的情况下多线程的同步和通信与传统单核CPU下有什么不同呢?线程间的同步和通信又该如何处理?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
首先,启动若干个线程,各线程执行若干时间的简单程序,在线程执行结束以后,等待若干时间后,
使用单线程执行这个简单程序,在windows系统下,打开任务管理器的性能标签,根据执行期内的性能
占用情况分析线程与多核处理器下的性能分解的关系。这个测试分别用10线程和100线程进行了测试。
package com.icefox.test.mulcore;     
import java.util.Date;   
public class MulCoreTest {   
  
    private int continueSecond; // 线程持续时间,默认20秒   
      
    public MulCoreTest(){   
        continueSecond=20;   
           
    }   
      
    public MulCoreTest(int continueSecond){   
        this.continueSecond = continueSecond;   
    }   
      
    public int getContinueSecond(){   
        return this.continueSecond;   
    }   
      
    /**  
     * 线程测试方法,先执行指定时间的多线程,  
     * 再执行指定时间的单线程,  
     * 查看资源管理器,证明线程与cpu核心的关系  
     * @throws InterruptedException  
     */  
    public void testThread() throws InterruptedException{   
           
        /**  
         * 多线程执行  
         */  
        System.out.println("Mul Thread run");   
        for(int i=0;i<100;i++){   
            new CustThread().start();   
        }   
        /**  
         * 休息30秒  
         */  
        Thread.sleep((this.continueSecond+30)*1000);   
        /**  
         * 单线程执行  
         */  
        System.out.println("Single Thread run");   
        testSingleThread();   
    }   
      
    /**  
     * @param args  
     * @throws InterruptedException   
     */  
    public static void main(String[] args) throws InterruptedException {   
        // TODO Auto-generated method stub   
        MulCoreTest mul = new MulCoreTest();   
        mul.testThread();   
    }   
      
    /**  
     * 单线程测试  
     *  
     */  
    public void testSingleThread(){   
        Date startTime = new Date();   
        while(true){   
            System.out.println("Single Thread");   
            Date nowTime = new Date();   
            if((nowTime.getTime()-startTime.getTime())/1000>continueSecond){   
                break;   
            }   
        }   
    }   
}   

评分

参与人数 1技术分 +2 黑马币 +3 收起 理由
admin + 2 + 3

查看全部评分

回复 使用道具 举报
我记得好像学习的时候说,其实现在我们用的双核处理器,只是两个运算核心,不是实际的两个内核,也就是说两个处理核心是连接在一个内核上的,核心之间以芯片速度通信,进一步降低了处理器之间的延迟,所以双核的比单核的快。其他的好像就跟单核没什么太大的差别吧。就像我们的硬盘,其实物理硬盘只有一个,但是我们有时候还是问,你的电脑分了一个盘?
额。。。 差不多是这个样子吧

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
刚才百度到了的连接
http://baike.baidu.com/view/1443165.htm
http://bbs.itheima.com/forum.php ... tid=2478&extra=
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马