Advertisement
RomioSul

Untitled

Mar 16th, 2021
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.75 KB | None | 0 0
  1.  
  2. class Incremenator extends Thread
  3. {
  4.     private volatile boolean mIsIncrement = true;
  5.  
  6.     public void changeAction()  //Меняет действие на противоположное
  7.     {
  8.         mIsIncrement = !mIsIncrement;
  9.     }
  10.  
  11.     @Override
  12.     public void run()
  13.     {
  14.         do
  15.         {
  16.             if(!Thread.interrupted())   //Проверка прерывания
  17.             {
  18.                 if(mIsIncrement) Program.mValue++;  //Инкремент
  19.                 else Program.mValue--;          //Декремент
  20.                
  21.                 //Вывод текущего значения переменной
  22.                 System.out.print(Program.mValue + " ");
  23.             }
  24.             else
  25.                 return;     //Завершение потока
  26.  
  27.             try{
  28.                 Thread.sleep(1000);     //Приостановка потока на 1 сек.
  29.             }catch(InterruptedException e){
  30.                 return; //Завершение потока после прерывания
  31.             }
  32.         }
  33.         while(true);
  34.     }
  35. }
  36.  
  37. class Program
  38. {
  39.     //Переменая, которой оперирует инкременатор
  40.     public static int mValue = 0;
  41.    
  42.     static Incremenator mInc;   //Объект побочного потока
  43.  
  44.     public static void main(String[] args)
  45.     {
  46.         mInc = new Incremenator();  //Создание потока
  47.        
  48.         System.out.print("Значение = ");
  49.        
  50.         mInc.start();   //Запуск потока
  51.        
  52.         //Троекратное изменение действия инкременатора
  53.         //с интервалом в i*2 секунд
  54.         for(int i = 1; i <= 3; i++)
  55.         {
  56.             try{
  57.                 Thread.sleep(i*2*1000);     //Ожидание в течении i*2 сек.
  58.             }catch(InterruptedException e){}
  59.            
  60.             mInc.changeAction();    //Переключение действия
  61.         }
  62.        
  63.         mInc.interrupt();   //Прерывание побочного потока
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement