2014-03-31 4 views
0

여러 스레드와 변수가 있습니다. 이 변수를 한 문자열의 문자열 값으로 설정 한 다음 다른 스레드에서 최신 변수를 사용합니다. 그러나 스레드간에 업데이트하는 것 같지 않습니다. 변수 값을 가질 때까지모든 스레드에서 스레드를 업데이트하십시오.

Server s = new Server(); 
while (s.userInput==null) 
    { 
    } 
System.out.println(s.userInput); 
command = s.userInput; 

기다린 다음에 현재 클래스의 변수를 할당 : I는 다음과 같이 변수를 사용

public volatile String userInput = null; 

같이 변수를 설정 하였다. 변수는 Server 클래스에서 설정됩니다.

다른 것이 필요합니까? 또는 휘발성이 잘못 되었습니까? 덕분에 많은 감사합니다 :) 휘발성 그런데

+0

이 필드를 어디에 사용할지 알려주세요. –

+0

스레드 개체간에 데이터 멤버를 공유하기 위해 정적 필드를 사용할 수도 있습니다. – ritesht93

+0

솔루션 찾기 [here] (http://stackoverflow.com/questions/15214331/synchronize-write-access-to-volatile-field-cheap-read- 쓰기 블록? answertab = votes # tab-top). – Braj

답변

0

@pokeairguy 오신 것을 환영합니다 :) ..

필드 값이 캐시되지 않아야하는 방식으로 JVM을 알려줍니다 .. 쓰기가 참조 된 곳이 업데이트해야합니다 발생할 때마다 = 그러므로 휘발성

하고 각 개체 그래서 아무 공유를위한 달랐다 즉 코드는 개체마다 서로 다른 휘발성 회원을했다 .. 왜 스레드가

객체를 통해 데이터 멤버를 공유하는 방법을 고정 된 사용

관련 문제