- это программа, наделенная множеством функций. В этой статье мы рассмотрим одну из таких функций - ключевое слово volatile в Java. Следующие указатели будут рассмотрены в этой статье,
Продолжаем читать статью о Volatile Keyword в Java.
java в степени оператора
Ключевое слово volatile используется для изменения значения переменной разными потоками. Он также используется для обеспечения потоковой безопасности классов. Это означает, что несколько потоков могут без проблем использовать метод и экземпляр классов одновременно. Ключевое слово volatile можно использовать как с примитивным типом, так и с объектами.
пример
class Test {static int var = 5}
В приведенном выше примере предположим, что два потока работают с одним и тем же классом. Оба потока работают на разных процессорах, где каждый поток имеет свою локальную копию var. Если какой-либо поток изменяет свое значение, это изменение не отразится на исходном значении в основной памяти. Это приводит к несогласованности данных, потому что другой поток не знает об измененном значении.
class Test {static volatile int var = 5}
В приведенном выше примере статические переменные являются членами класса, которые используются всеми объектами. В основной памяти всего одна копия. Значение изменчивой переменной никогда не будет сохранено в кеше. Все операции чтения и записи будут производиться из основной памяти и в нее.
Продолжаем читать статью о Volatile Keyword в Java.
Разница между синхронизацией и изменчивым ключевым словом
Ключевое слово Volatile не заменяет ключевое слово synchronized, но в некоторых случаях может использоваться как альтернатива. Существуют следующие отличия:
Неустойчивое ключевое слово | Ключевое слово синхронизации |
Ключевое слово Volatile - это модификатор поля. | Ключевое слово Synchronized изменяет блоки кода и методы. |
В случае нестабильности поток не может быть заблокирован для ожидания. | В случае синхронизации потоки могут быть заблокированы на ожидание. |
Это улучшает производительность потока. | Синхронизированные методы ухудшают производительность потока. |
Он синхронизирует значение одной переменной за раз между памятью потока и основной памятью. | Он синхронизирует значение всех переменных между памятью потока и основной памятью. |
Неустойчивые поля не подлежат оптимизации компилятора. | Синхронизация подлежит оптимизации компилятора. |
Продолжаем читать статью о Volatile Keyword в Java.
Пример:
открытый класс VolatileTest {частный статический финальный регистратор LOGGER = MyLoggerFactory.getSimplestLogger () частный статический volatile int MY_INT = 0 public static void main (String [] args) {new ChangeListener (). start () new ChangeMaker (). start ()} статический класс ChangeListener расширяет поток {@Override public void run () {int local_value = MY_INT while (local_value<5){ if( local_value!= MY_INT){ LOGGER.log(Level.INFO,'Got Change for MY_INT : {0}', MY_INT) local_value= MY_INT } } } } static class ChangeMaker extends Thread{ @Override public void run() { int local_value = MY_INT while (MY_INT <5){ LOGGER.log(Level.INFO, 'Incrementing MY_INT to {0}', local_value+1) MY_INT = ++local_value try { Thread.sleep(500) } catch (InterruptedException e) { e.printStackTrace() } } } } }
На этом мы подошли к концу статьи о «Изменчивом ключевом слове в Java». Если вы хотите узнать больше, посетите обучение Java от Edureka, надежной компании, занимающейся онлайн-обучением. Эдурека Курс предназначен для обучения вас как основным, так и продвинутым концепциям Java, а также различным фреймворкам Java, таким как Hibernate и Spring.
в чем разница между абстрактным классом и интерфейсом?
Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога, и мы свяжемся с вами как можно скорее.