Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не осуществляется синхронизация? 
:(
    Опции темы
CrasyMen
Дата 19.8.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: нет
Всего: 3



есть код:
Код
public class Thread3 implements Runnable{
    String str;
    Thread go;
    Thread3(String str) {
        this.str = str;
        go = new Thread(this);
        go.start();
    }
    public synchronized void run() {      // сихронизированный метод
        Thread t = Thread.currentThread();
        while(go == t) {                      // есть предположение, что этот цикл влияет на синхронизацию, т.к без него все ок
            try {                               
                Thread.sleep(50);
            } catch(InterruptedException e) { }
            System.out.print(str);
        }
        System.out.println("\nEnd");
    }
    public void stop() { go = null; }    
    public static void main(String[] args) {
        Thread3 t1 = new Thread3("-");
        Thread3 t2 = new Thread3("^");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) { }
        t1.stop();
        t2.stop();
    }
}

Почему не осуществляется синхронизация?

Это сообщение отредактировал(а) CrasyMen - 19.8.2007, 18:13


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
ekr
Дата 19.8.2007, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 3
Всего: 19



синхронизировать надо не метод потока run, а тот (те) методы, в которые входит поток.
т.е. те методы, кот. вызываются из run.
в этом случае при наличии нескольких потоков синхронизированность методов не позволит выполнить те методы в многопоточном режиме.

вообще, это тема довольно объемная и рассматривалась на форуме уже много раз - посмотри архив и faq. 


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.