Как сделать потокобезопасным статическую переменную в веб-контроллере - PullRequest
0 голосов
/ 14 апреля 2019

Как я знаю, по умолчанию контроллером является одноэлементная область.Если в контроллере есть статическая переменная, как я могу сделать ее поточно-ориентированной?

Кроме использования синхронизированного способа позаботиться об этом, есть ли другой способ?

1 Ответ

0 голосов
/ 14 апреля 2019

Вы можете использовать ReadWriteLock для выполнения поточно-ориентированных операций чтения / записи для некоторого общего объекта:

import java.util.concurrent.locks.*;

public class Something {
    private static SomeObject object = new SomeObject();
    private static ReadWriteLock objectLock = new ReentrantReadWriteLock();

    public void doSomething() {
        objectLock.readLock().lock();
        try {
            //reading something from object
        } finally {
            objectLock.readLock().unlock();
        }

        objectLock.writeLock().lock();
        try {
            //writing something in object
        } finally {
            objectLock.writeLock().unlock();
        }
    }
}

Обратите внимание, что в этом примере, если значениеobject переменная когда-либо изменяется (не сам объект), она должна быть объявлена ​​с модификатором volatile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...