Как реализовать изменчивое ключевое слово в Java?



Java - это программа, наделенная множеством функций. В этой статье мы рассмотрим одну из таких функций - ключевое слово volatile в Java.

- это программа, наделенная множеством функций. В этой статье мы рассмотрим одну из таких функций - ключевое слово 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.

в чем разница между абстрактным классом и интерфейсом?

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога, и мы свяжемся с вами как можно скорее.