powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / синхронизация
3 сообщений из 3, страница 1 из 1
синхронизация
    #34505392
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
изучаю многопоточность. написал вот примерчик, пытаюсь осуществить синхронизацию, что с sinchronized что без пример работает одинаково. помогите разобраться что к чему.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 package  test;

 import  java.util.concurrent.locks.Lock;
 import  java.util.concurrent.locks.ReentrantLock;

 public   class  ConcurentThreadTest  implements  Runnable {
    
    /** Creates a new instance of ConcurentThreadTest */
     public  ConcurentThreadTest() {
    }
    
     synchronized   void  runCounter(){
         int  y;
         try  {
             while (x >  0 ){
                y = x;
                Thread.sleep( 50 );
                System.out.println(Thread.currentThread() + " x=" + y + " x-1=" + --x);                 
            }
        } 
         catch  (InterruptedException ex) {
            ex.printStackTrace();
        }        
    }

     public   void  run() {
         runCounter();
    }
    
     public   static   void  main(String[] args){
        Runnable r1 =  new  ConcurentThreadTest();
        Thread t1 =  new  Thread(r1);
        t1.start();
        
        Runnable r2 =  new  ConcurentThreadTest();
        Thread t2 =  new  Thread(r2);
        t2.start();
            
    }
     static   public   int  x =  10 ;
    //private Lock lock = new ReentrantLock();
}
в консоль вываливается следующее:

Thread[Thread-0,5,main] x=10 x-1=9
Thread[Thread-1,5,main] x=10 x-1=8
Thread[Thread-0,5,main] x=9 x-1=7
Thread[Thread-1,5,main] x=8 x-1=6
Thread[Thread-0,5,main] x=7 x-1=5
Thread[Thread-1,5,main] x=6 x-1=4
Thread[Thread-0,5,main] x=5 x-1=3
Thread[Thread-1,5,main] x=4 x-1=2
Thread[Thread-0,5,main] x=3 x-1=1
Thread[Thread-1,5,main] x=2 x-1=0
Thread[Thread-0,5,main] x=1 x-1=-1
...
Рейтинг: 0 / 0
синхронизация
    #34505402
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если использую ReentrantLock, та же фигня
...
Рейтинг: 0 / 0
синхронизация
    #34505541
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разобрался )) я создаю два экземпляра одного класса и запускаю их в два потока, поэтому они используют собственные методы и никто никого не блокирует, а если запустить два потока от одного экземпляра то все ок, потоки обращаются к одному методу одгого и тогоже обьекта и становятся в очередь )
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / синхронизация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]