Как я могу получить доступ к полям объекта Runnable в моей теме - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь получить время, которое требуется ЦП для выполнения переключения контекста, поэтому у меня есть класс, занимающий системное время в наносекундах, и я помещаю его в несколько потоков, но мне нужно получить эти числа и выполнить вычисления на нем, ноЯ не знаю, как я могу получить к нему доступ.

Это моя основная функция.

 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;
    }
}

Я знаю, что название класса говорит "Труба", но я им не пользуюсь.

1 Ответ

1 голос
/ 17 марта 2019

Я не знаю, правильно ли это делать, но тем не менее ваш код становится таким

    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 () будет блокироваться до тех пор, пока не закончится работа вашего потока, надеюсь, я помог

...