2010-09-21 3 views
-1

Что такое синхронизация потока в java? дайте любой пример по этому вопросуЧто такое синхронизация потока в java?

+1

Поиск по Google, и вы найдете много замечательных примеров. –

+2

Это выглядит как домашнее задание. Пожалуйста, узнайте об этом сами, а затем задайте здесь несколько более конкретных вопросов. – tangens

+0

Я обычно не отвечаю на домашние вопросы подробно. Но ответная копия/вставка отсюда так же хороша, как копия ответа/вставленная с любого другого веб-сайта. Это не значит, что здесь есть вопрос программирования. –

ответ

3

Посмотрите на java tutorial о синхронизации.

+0

Также, пожалуйста, прочитайте параллелизм в pratice Дуг Ли. –

1

В многопоточных программах часто используются разделы программы, которые необходимо запускать атомарно (как если бы это была одна операция). Они обычно называются критическими областями и защищены с помощью парадигм взаимного исключения (мьютекса). Ключевое слово synchronized в Java - один из таких способов обеспечения взаимного исключения.

Рассмотрим код:

synchronized(lockObject) { 
    //critical code 
} 

В приведенном выше коде, только один поток может войти в этот синхронизированный блок в то время, при условии, что ссылка на объект переменной lockObject никогда не изменяется. Это гарантирует, что код, выполняемый в синхронизированном блоке, выполняется только одним потоком.

Общие примеры того, где требуется блокировка, были бы при итерации по коллекции. Несколько реализаций Java Collection предлагают поточную итерацию. Основным способом создания поточной безопасной итерации будет защита каждого доступа к коллекции с помощью синхронизированного блока в этой коллекции.

Например:

synchronized(myCollection) { 
    myCollection.add(item); 
} 

synchronized(myCollection) { 
    myCollection.remove(item); 
} 

synchronized(myCollection) { 
    for(Object item:myCollection){ 
    System.out.println(item); 
    } 
} 
Смежные вопросы