java - 如何访问线程中 Runnable 对象的字段

标签 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 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,但我不使用它。

最佳答案

我不知道这是否是正确的方法,但尽管如此,你的代码会变成这样

    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() 将阻塞,直到你的线程完成运行,希望我有所帮助

关于java - 如何访问线程中 Runnable 对象的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55210224/

相关文章:

java - 何时收集垃圾

java - 安卓工作室 : JavaSE app

android - 线程运行时在 Service 中调用 stopSelf()

c# - 为什么后台线程中未处理的异常不会使应用程序域崩溃?

java - 具有两个线程的控制台应用程序

java - 当键改变时如何访问 Thymeleaf Spring 方言中的 map ?

java - DefaultListModel.contains() 的作用是什么?

multithreading - "How many links do I have?",询问 Erlang 进程

java - 使用 Java 创建异常的迭代器问题

c++ - std::atomic::load 如何实现