synchronized

public class SharedState { @Test public void sharedState(){ final ExecutorService executorService = Executors.newCachedThreadPool(); final SimpleCounter simpleCounter = new SimpleCounter(); executorService.execute(new CounterSetter(simpleCounter)); simpleCounter.setNumber(200); assertEquals(200, simpleCounter.getNumber()); } private static class CounterSetter implements Runnable{ private final S..
동기화된 컬렉션(thread-safe한 collection), 병렬처리 컬렉션 컬렉션 프레임워크 대부분 싱글 스레드 환경에서 사용할 수 있도록 설계Vector, Hashtable은 동기화된 (synchronized) 메소드로 구성되어 있기 때문에 멀티 스레드 환경에서 안전함하지만 ArrayList, HashSet, HashMap 은 멀티스레드 환경에서 안전하지 않다. 따라서 자바에서는 Collections의 synchronizedXXX() 메소드를 제공한다.매개값으로 컬렉션을 대입하면 동기화된 컬렉션을 리턴한다. 리턴 타입메소드(매개변수)설명 ListsynchronizedList(List list)List를 동기화된 List로 리턴MapsynchronizedMap(Map m)Map을 동기화된 Map으로 ..
동기화 메소드와 동기화 블록 공유 객체를 사용할 때 주의할 점멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있다.이 경우, 스레드 A를 사용하던 객체가 스레드 B에 의해 상태가 변경될 수 있기 때문에 스레드 A가 의도했던 것과는 다른 결과를 산출할 수도 있다. public class User1 extends Thread{ private Calculator calculator; @Override public void run() { calculator.setmemory(100); } public void setCalculator(Calculator calculator) { this.setName("User1"); this.calculator = calculator; } } pub..
깡냉쓰
'synchronized' 태그의 글 목록