2012-02-29 3 views
1

데이터가 Java 내에서 여러 스레드에 의해 액세스되거나 공유되는시기를 연구했습니다. 그리고 같은 문제로보고 :동일한 데이터를 공유/액세스하는 다중 스레드 문제

  • 스레드 간섭
  • 메모리 일관성
  • 교착 상태
  • 기아 이로부터

, 이러한 문제를 해결하기위한 솔루션을 제공합니다.

지금까지 이러한 문제를 해결하는 방법은 동기화 방법을 사용하는 것입니다. 동기화 방법을 사용하는 다른 방법이 있습니까? 나는이 정보의 대부분을 Sun Java 튜토리얼에서 발견했다. 추가 읽기에 대한 권장 사항은 무엇입니까?

+0

주제 해제 stackoverflow. FAQ를 읽어보십시오. 아마도 프로그래머 스택 교환은 게시하려는 곳입니다. –

+0

+1 호버크라프트의 의견 – Toby

답변

3

가능하면 데이터를 읽기 전용 (불변)으로 유지하거나 일반적인 조언으로 스레드 로컬로 복사하십시오.

Java에서는 데이터 동기화를 피할 필요가있을 때 사용할 카운터 (AtomicInteger, AtomicLong 등) 및 컬렉션 (java.util.concurrent.*)의 몇 가지 특수 비 차단 구현이 있습니다.

"Effective Java"(Joshua Bloch) 또는 "Java 동시성"을 권장 할 수 있습니다.

+0

위의 책 중 하나만 얻을 수 있다면 - 뭐가 더 낫지? 실제로 효과적인 Java 또는 Java 동시성? – NightWolf

+1

_Effective Java_는 좋은 코드와 유지 보수 가능한 코드를 작성하는 방법에 대한 ** 일반적인 ** 책입니다. 또한 자바에서 몇 가지 함정을 피하는 데 도움이됩니다. _Java 동시성 _은 동시성과 그 주제에 대한 심층 연구에 전문화되어 있습니다. 지역 서점에 가서 자신의 필요에 맞는 것을 찾아 보시기 바랍니다. 또는 책의 색인을보고 주제에 대한 개요를 볼 수 있습니다. [JCIP] (http://jcip.net/contents.html), [EJ] (http://java.sun.com/docs /books/effective/toc.html) – Benjamin

관련 문제