Java에서 Volatile 키워드를 구현하는 방법?



Java는 많은 기능을 갖춘 하나의 프로그래밍입니다. 이 기사에서는 Java의 휘발성 키워드 인 이러한 기능 중 하나를 탐색 할 것입니다.

많은 기능을 갖춘 하나의 프로그래밍입니다. 이 기사에서는 Java의 휘발성 키워드 인 이러한 기능 중 하나를 탐색 할 것입니다. 이 기사에서는 다음 사항을 다룰 것입니다.

Java의 Volatile Keyword에 대한이 기사를 계속 진행합니다.





프로젝트 관리에서 조달이란 무엇입니까?

volatile 키워드는 다른 스레드에 의해 변수 값을 수정하는 데 사용됩니다. 또한 클래스를 스레드로부터 안전하게 만드는 데 사용됩니다. 이는 여러 스레드가 문제없이 클래스의 메서드와 인스턴스를 동시에 사용할 수 있음을 의미합니다. volatile 키워드는 기본 유형 또는 객체와 함께 사용할 수 있습니다.

class Test {static int var = 5}

위의 예에서 두 개의 스레드가 동일한 클래스에서 작동한다고 가정합니다. 두 스레드는 각 스레드에 var의 로컬 사본이있는 다른 프로세서에서 실행됩니다. 스레드가 값을 수정하면 변경 사항이 주 메모리의 원래 스레드에 반영되지 않습니다. 다른 스레드가 수정 된 값을 인식하지 못하기 때문에 데이터 불일치가 발생합니다.



class Test {static volatile int var = 5}

위의 예에서 정적 변수는 모든 개체간에 공유되는 클래스 멤버입니다. 주 메모리에는 복사본이 하나만 있습니다. 휘발성 변수의 값은 캐시에 저장되지 않습니다. 모든 읽기 및 쓰기는 주 메모리에서 수행됩니다.

Java의 Volatile Keyword에 대한이 기사를 계속 진행합니다.

동기화와 휘발성 키워드의 차이점

Volatile 키워드는 동기화 된 키워드의 대체가 아니지만 특정 경우에 대안으로 사용할 수 있습니다. 다음과 같은 차이점이 있습니다.



휘발성 키워드 동기화 키워드
Volatile 키워드는 필드 수정 자입니다.Synchronized 키워드는 코드 블록 및 메서드를 수정합니다.
휘발성의 경우 대기를 위해 스레드를 차단할 수 없습니다.동기화 된 경우 스레드 대기를 차단할 수 있습니다.
스레드 성능을 향상시킵니다.동기화 된 메서드는 스레드 성능을 저하시킵니다.
스레드 메모리와 주 메모리간에 한 번에 하나의 변수 값을 동기화합니다.스레드 메모리와 주 메모리 사이의 모든 변수 값을 동기화합니다.
휘발성 필드는 컴파일러 최적화의 대상이 아닙니다.Synchronize는 컴파일러 최적화를 따릅니다.

Java의 Volatile Keyword에 대한이 기사를 계속 진행합니다.

예:

public class VolatileTest {private static final Logger LOGGER = MyLoggerFactory.getSimplestLogger () private static 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() } } } } } 

이미지 휘발성 에두 레카

따라서 우리는 '자바의 Volatile Keyword'에 대한이 기사를 끝 맺었습니다. 자세한 내용은 신뢰할 수있는 온라인 학습 회사 인 Edureka의 Java Training을 확인하십시오. 에두 레카 코스는 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

devops의 요리사는 무엇입니까

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.