Java: один замок на метод на объектJAVA

Программисты JAVA общаются здесь
Anonymous
Java: один замок на метод на объект

Сообщение Anonymous »

Я создаю WebCrawler, и у него есть 2 основная функция, которая выполняется в виде потоков:
-The Fetcher (Clawl A Веб-сайт и отдельные ссылки из файлов хранят их в базе данных).
-загрузка (загружающий файлы на основе их URL-адреса, возвращаемых Fetcher). Теперь я хочу манипулировать своей базой данных, чтобы изменить статус ссылки с ожидания на извлечение , затем Fetched . То же самое относится и к файлам из ожидания до загрузки , затем загруженного .

Код: Выделить всё

public synchronized String[] getNextLink(){
//Return the next link from database that has visited set to 0 then change it to -1 to say that it's in-use.
}
И я сделал то же самое для своих загрузчиков с этой функцией:

Код: Выделить всё

public synchronized String getNextFile(){
//Return the next file from database that has downloaded set to 0 then change it to -1 to say that it's downloading
}
Оба метода находятся на моем объекте , поскольку, если 2 магистрали работают с разными веб -сайтами, они не могут выбрать одну и ту же строку в моей базе данных (то же самое касается загрузчиков). Но обе функции могут быть вызваны одновременно, потому что Fetchers никогда не выбирайте файл и загрузки никогда не выбирайте link .
Теперь синхронизированный использует один блокировщик (для объекта), поэтому оба из моих методов не могут быть вызваны в одно и то же время. Есть ли еще одно ключевое слово для использования одного блокировки на метод на объект ? Или мне нужно кодировать это?

Подробнее здесь: https://stackoverflow.com/questions/347 ... per-object

Вернуться в «JAVA»