package com.javarush.task.task16.task1612;

/*
Stopwatch (Секундомер)
*/

public class Solution {
    public static volatile boolean isStopped = false;

    public static void main(String[] args) throws InterruptedException {
        Runner ivanov = new Runner("Ivanov", 4);
        Runner petrov = new Runner("Petrov", 2);
        //на старт!
        //внимание!
        //марш!
        ivanov.start();
        petrov.start();
        Thread.sleep(2000);
        isStopped = true;
        Thread.sleep(1000);
    }

    public static class Stopwatch extends Thread {
        private Runner owner;
        private int stepNumber;

        public Stopwatch(Runner runner) {
            this.owner = runner;
        }

        public void run() {
            try {
                while (!isStopped) {
                    doStep();
                }
            } catch (InterruptedException e) {
            }
        }

        private void doStep() throws InterruptedException {

            stepNumber++;
            this.sleep(1000/owner.getSpeed());//////////////////////////////////////////////////////////////////////////////////если тут указать, что засыпает именно этот объект, то валидатор не пропускает, а если указать Thread.sleep , то пропускает.....
            System.out.println(owner.getName() + " делает шаг №" + stepNumber + "!");

        }
    }

    public static class Runner {
        Stopwatch stopwatch;
        private String name;
        private int speed;

        public Runner(String name, int speed) {
            this.name = name;
            this.speed = speed;
            this.stopwatch = new Stopwatch(this);
        }

        public String getName() {
            return name;
        }

        public int getSpeed() {
            return speed;
        }

        public void start() {
            stopwatch.start();
        }
    }
}
пояснение в коде... В чем различие как указать this или Thread? и еще сразу уточнить: если мы указываем Thread.sleep() - засыпает вся нить, в которой указать Thread.sleep(), а остальные нити продолжат работу?