簡體   English   中英

如何在Java中使用多核?

[英]How to use multiple cores with java?

我試圖了解Java線程如何與CPU內核一起工作。 我有一個4核CPU,當我嘗試在以下代碼下運行時,執行時間很有趣。 為什么它不通過多個線程加速? 難道我做錯了什么?

availableProcessors()順便返回4。

下面的代碼需要將近27秒;

        Runnable runnable = new Runnable() {
        @Override
        public void run() {
            int x = 0;
            while(x < 10000000){
                System.out.println(x);
                x++;
            }
        }
    };

    Thread t1 = new Thread(runnable);

    t1.start();

當我使用多個線程時,需要33秒;

Runnable runnable = new Runnable() {
        @Override
        public void run() {
            int x = 0;
            while(x < 5000000){
                System.out.println(x);
                x++;
            }
        }
    };

    Runnable runnable2 = new Runnable() {
        @Override
        public void run() {
            int x = 5000000;
            while(x < 10000000){
                System.out.println(x);
                x++;
            }
        }
    };

    Thread t1 = new Thread(runnable);

    t1.start();


    Thread t2 = new Thread(runnable2);

    t2.start();

您的程序有一個連續的瓶頸,正在向終端打印。

System.out.println包含一個同步塊,因此一次寫入一次,因此您的代碼不是並行的。

程序的順序部分(包括協調)是根據阿姆達爾定律控制其性能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM