Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / синхронизация / 3 сообщений из 3, страница 1 из 1
04.05.2007, 15:23:35
    #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
04.05.2007, 15:25:04
    #34505402
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация
если использую ReentrantLock, та же фигня
...
Рейтинг: 0 / 0
04.05.2007, 15:49:51
    #34505541
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация
разобрался )) я создаю два экземпляра одного класса и запускаю их в два потока, поэтому они используют собственные методы и никто никого не блокирует, а если запустить два потока от одного экземпляра то все ок, потоки обращаются к одному методу одгого и тогоже обьекта и становятся в очередь )
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / синхронизация / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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