Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问线程中可运行对象的字段_Java_Multithreading_Concurrency_Operating System_Java Threads - Fatal编程技术网

Java 如何访问线程中可运行对象的字段

Java 如何访问线程中可运行对象的字段,java,multithreading,concurrency,operating-system,java-threads,Java,Multithreading,Concurrency,Operating System,Java Threads,我试图得到CPU执行上下文切换所需的时间,所以我有一个以纳秒为单位计算系统时间的类,我把它放到一些线程中,但我需要得到这些数字并对其执行计算,但我不知道如何访问它 这是我的主要功能 public class GroupNinePipe{ public static void main(String[] args) { Thread t1 = new Thread(new OSProj2("Thread1")); Thread t2 = new T

我试图得到CPU执行上下文切换所需的时间,所以我有一个以纳秒为单位计算系统时间的类,我把它放到一些线程中,但我需要得到这些数字并对其执行计算,但我不知道如何访问它

这是我的主要功能

 public class GroupNinePipe{
    public static void main(String[] args)
    {
        Thread t1 = new Thread(new OSProj2("Thread1"));
        Thread t2 = new Thread(new OSProj2("Thread2"));
        Thread t3 = new Thread(new OSProj2("Thread3"));
        Thread t4 = new Thread(new OSProj2("Thread4"));
        Thread t5 = new Thread(new OSProj2("Thread5"));
        Thread t6 = new Thread(new OSProj2("Thread6"));

        OSProj2 n = new OSProj2("Thread 8");



        t1.start();
        t2.start();
        t3.start();
        t4.start();
        t5.start();
        t6.start();

    }
}
上课需要系统时间

    public class OSProj2 implements Runnable {
    String name;
    long time;

    public OSProj2(String x)
    {
        name = x;


    }

    public void run()
    {
        try{
            time = System.nanoTime();
            System.out.printf("%s sys time: %d\n", name, time);
            this.getTime();


        }
        catch (Exception e){}
    }

    public long getTime()
    {
        return time;
    }
}

我知道类的名称是Pipe,但我不使用Pipe。

我不知道这样做是否正确,但是,您的代码变成了这样

    Runnable osProj2 = new OSProj2("Thread1");
    Thread t1 = new Thread(osProj2);
    t1.start();

    try {
        t1.join();
     } catch (InterruptedException e) {
        e.printStackTrace();
     }
     System.out.println(osProj2.getTime()); // for example
t1.join()将一直阻塞,直到您的线程完成运行,希望我有所帮助