class ThreadSafeClass extends Thread
{
private static int count = 0;
public synchronized static void increment()
{
count++;
}
public synchronized void decrement()
{
count--;
}
}
Хто-небудь може пояснити, чому вищезгаданий клас не є безпечним для потоків?
synchronized
слід використовувати лише статичні методи. Отже, на мою думку, навіть якщо ви видалите increment
метод, він все одно не є безпечним для потоків, оскільки два екземпляри (які мають лише синхронізований доступ через один і той же екземпляр) можуть одночасно викликати метод.
increment
), це буде безпечно для потоку. Або якщо ви використовували якийсь фіксуючий об’єкт. Як я вже сказав, я не знаю про Java - мій коментар походить від знань на C #.