-2

Javaマルチスレッドの基本的な概念はいくつか知っていますが、同時に動作する5つのスレッドを作成したいと考えています。スレッドの実行時間を取得するにはどうすればよいですか?...方法や目的など、スレッドの深い概念について誰か助けてください。

4

4 に答える 4

2

あなたの質問は本当に不明確です。スレッドの実行時間とはどういう意味ですか? 開始時と停止時 (経過時間) または、保留中の時間を除いて実際に実行されていた時間 (つまり、CPU 時間)?

Java でスレッドごとの CPU 使用率を監視するをご覧ください。

ところで、スレッド化は、StackOverflow の回答から簡単に学べるものではありません。

Java の公式ガイドでは、同時実行性について非常によく説明されています: http://docs.oracle.com/javase/tutorial/essential/concurrency/

「Java Concurrency in Practice」という本はさらに優れています。

于 2013-10-03T05:22:28.007 に答える
0

このコードのようなものは役に立つかもしれませんhttp://blog.sheidaei.com/2013/06/simple-thread-example-in-java.html

System.out.println() の代わりに System.currentTimeMillis() を使用して、スレッドの実行時間を取得できます。

/**
 * Created with IntelliJ IDEA.
 * User: shahin
 * Date: 6/5/13
 * Time: 11:32 PM
 * To change this template use File | Settings | File Templates.
 */
public class SimpleThread implements Runnable{

    public SimpleThread(String simpleName) {
        this.simpleName = simpleName;
        System.out.println(">>> Constructor for " + getSimpleName());
    }

    public String getSimpleName() {
        return simpleName;
    }

    public void setSimpleName(String simpleName) {
        this.simpleName = simpleName;
    }

    private String simpleName;
    @Override
    public void run() {
        System.out.println(" >> "+getSimpleName() + " started.");
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        System.out.println(" >> "+getSimpleName() + " stopped.");
    }

    public static void main(String args[])
    {
        System.out.println("Main Thread started.");

        SimpleWaitNotifyThread simpleThread;
        Thread thread;
        for(int i=0;i<5;i++)
        {
            simpleThread = new SimpleWaitNotifyThread("Thread "+(i+1));
            thread = new Thread(simpleThread,"Thread "+(i+1));
            thread.start();
        }

        System.out.println("Main Thread finished.");
    }
}
于 2013-10-03T05:26:22.153 に答える