My940935011
2012-10-16 09:37 阅读 262
已采纳

Java线程问题

Java中线程对象什么用?有谁知道?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    niuzai12 andy_zheng2011 2012-10-16 18:31

    亲,测试例子
    [code="java"]
    public static void main(String[] args) {

    final List singelists = new ArrayList();

        long startTime = System.nanoTime();
        for (int i = 0; i < 900; i++) {
            singelists.add(i);
            System.out.println(i);
        }
        long endTime = System.nanoTime();
        System.out.println("单线程运行时间:" + (endTime - startTime));
    
        final List lists = new ArrayList();
        final long newStartTime = System.nanoTime();
        new Thread(){
            public void run() {
                for (int i = 0; i < 300; i++) {
                    System.out.println(this.getName() + ":" + i);
                    lists.add(i);
                }
                if(lists.size() == 900){
                    System.out.println(this.getName() + "-多线程运行时间:" + (System.nanoTime() - newStartTime));
                }
            };
        }.start();
    
        new Thread(){
            public void run() {
                for (int i = 300; i < 600; i++) {
                    System.out.println(this.getName()  + ":" + i);
                    lists.add(i);
                }
                if(lists.size() == 900){
                    System.out.println(this.getName() + "-多线程运行时间:" + (System.nanoTime() - newStartTime));
                }
            };
        }.start();
    
        new Thread(){
            public void run() {
                for (int i = 600; i < 900; i++) {
                    System.out.println(this.getName() + ":" + i);
                    lists.add(i);
                }
                if(lists.size() == 900){
                    System.out.println(this.getName() + "-多线程运行时间:" + (System.nanoTime() - newStartTime));
                }
            };
        }.start();
    }   
    

    [/code]

    测试结果:
    [code="java"]
    单线程运行时间:18768865
    Thread-0-多线程运行时间:15046605
    [/code]

    点赞 评论 复制链接分享
  • niuzai12 andy_zheng2011 2012-10-16 13:03

    亲,简单的说多条腿跑的更快~ :D

    点赞 评论 复制链接分享
  • zhoutao_0116 zhoutao_0116 2012-10-16 13:11

    在同个线程里,在不同的类中都能取到存储在线程对象里的同一对象,不必进行对象的传递
    如存储在session.setAttribute() 中的对象在同一会话中都取到的是同一对象,而并没有进行传递

    点赞 评论 复制链接分享

相关推荐