Синхронізація ниток

import java.util.ArrayList;

import java.util.Scanner;

public class Main {

     public static void main(String[] args) {         

          MyThread thread1 = new MyThread();

          thread1.start();

          Scanner sc = new Scanner(System.in);

          sc.nextLine();        // зупинка Enter

          thread1.Strop();   

     }

}

class MyThread extends Thread{

     private volatile boolean isWork = true; 

     // та, що змінюється, не кешується для кожного кешу ядра процесора

     public void run() {

          while (isWork) {

               System.out.println("Thread 2");

               try {

                         Thread.sleep(100);

               } catch (InterruptedException e) {

                    e.printStackTrace();

               }


          }

     }

     public void Strop() {

          this.isWork = false;

     }

}