vencinachev

Threads

Nov 23rd, 2021 (edited)
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.09 KB | None | 0 0
  1. import java.util.concurrent.locks.ReentrantLock;
  2.  
  3. class Program {
  4.  
  5.     public static void main(String[] args) throws InterruptedException{
  6.         Number n = new Number(0);
  7.         int cnt = 100;
  8.         Thread[] th = new Thread[cnt];
  9.  
  10.         for (int i = 0; i < cnt; i++){
  11.             th[i] = new Thread(new Increment(n));
  12.         }
  13.         for (int i = 0; i < cnt; i++){
  14.             th[i].start();
  15.         }
  16.         for (int i = 0; i < cnt; i++){
  17.             th[i].join();
  18.         }
  19.         System.out.println("Number = " + (n.value));
  20.     }
  21.  
  22. }
  23.  
  24. class Increment implements Runnable {
  25.     Number num;
  26.     public Increment (Number n){
  27.         this.num = n;
  28.     }
  29.     @Override
  30.     public void run() {
  31.         for (int i = 0; i < 100; i++){
  32.              num.increment(); // i++
  33.         }
  34.     }  
  35. }
  36.  
  37. class Number {
  38.     ReentrantLock lock = new ReentrantLock();
  39.     public int value;
  40.     public Number(int value){
  41.         this.value = value;
  42.     }
  43.     public synchronized void increment(){
  44.        // lock.lock();
  45.         this.value++;
  46.        // lock.unlock();
  47.     }
  48. }
Add Comment
Please, Sign In to add comment