..
온라인 강좌
  • 페이스 북에 우리를 따르라
  • 트위터에 우리를 따르라
  • + Google에 우리를 따르라
  • RSS를 통해 우리를 따르라
  • 귀하의 스마트폰으로 우리를 따라

자바에서 공유 데이터 관리

가 작성한 기사 데미안 Verda
2 페이지 1

우리는 생각할 수 많은 파티에 노출되는 다른 정보 처리 작업을 같이 공유 제공. 상상해 예를 들어, 유로 / 달러를 나타내는 숫자 값을 저장합니다. 우리는 주기적으로 무엇 환율과 업데이 트 변수의 값을 검사 프로그램입니다. 하나 이상의 다른 프로그램 그러나, 작동하도록 업데이 트 환율 변환 가격을 사용합니다.

의 관리 공유 주어도이 간단한 예제에서, 특별한주의를 필요로하는 방법합니다. 응용 프로그램의 변환을 위해서는 환율을 읽을 필요가있는 동안, 또 다른 프로그램, 환율 자체를 변경하는 요청이 접수되어 있는지 예를 들어 상상해보십시오.

(기사는 아래에 계속됩니다 ...)

어떤이 먼저인가? 변환 어떤 환율인가요? 문제는, 심지어 약간 더 복잡한 경우에, 그것은 더욱 더 심각하게 될 수 있습니다.

관심 변수가 초등학교 아니라는 사실을 상상해지만, 데이터의 집합으로 구성된 예. 이 독서를 통해 다음에, 일부 분만 작성 후 서면의 완성이 시점에서 수행할 수 없습니다. 거래 후 의미없는 결과에 상승을 제공하므로 용납할 수없는, 일부만 변경된 값의 집합으로 수행됩니다.

많은 프로그래밍 언어는 공유 변수의 관리를위한 구체적인 도구를 제공 문제가 이런 종류의 존재를 감안할 때. 우리는 문제의이 클래스는 프로그래밍 언어로 자바, 가장 적 사용하여 해결하는 방법에 특히 아래의 검사합니다.

먼저 우리가 한번에 그 하나의 프로그램을 보장하는 방법을 이해해야, 더 정확하게 시간 (한 번 밖에 스레드는 스레드 즉 프로세스 또는 프로그램의 기본 구성 요소이며, 프로그램은 여러 스레드로 구성되어 있습니다 공유 변수에 액세스할 수 있습니다)를 동시에 실행합니다. 우리가 보장을 제공할 수있는 메커니즘은 상호 배제라고합니다.

상호 배제

Variabile_Condivisa 다음과 같이 구성되어라는 (즉 데이터 자체를 처리하기위한 유용한 함수 또는 데이터와 메서드의 집합) 클래스를 개발하기 상상



 공용 클래스 Variabile_Condivisa



 {

   

 euro_dollaro는 역부족;

   

 euro_sterlina는 역부족;


   

 Variabile_Condivisa ()

  

 {

     

 euro_dollaro = 1;

     

 euro_sterlina = 1;

  

 }


   

 set_euro_dollaro 공극 (부동 e_d) = {euro_dollaro e_d;}

   

 set_euro_sterlina 무효 (부동 e_s) = {euro_sterlina e_s;}


   

 get_euro_dollaro 플로트 () {반환 euro_dollaro;}

   

 get_euro_sterlina 플로트 () {반환 euro_sterlina;}



 }

환율 유로 / 달러 및 유로 / 스털링 우리가 여러 프로그램 (또는 여러 스레드 사이) 사이에 공유하고자하는 정보를 나타내는 두 개의 문장, 즉 euro_dollaroeuro_sterlina. 이러한 데이터 (그리고 set_euro_dollaro set_euro_sterlina)에 값을 할당하고 이러한 값 (및 get_euro_dollaro get_euro_sterlina)을 읽을 개발 방법.

그런 다음 클래스의 생성자하며이 경우 변수와 euro_dollaro euro_sterlina의 값을 1로 설정하고 설정, 각 Variabile_Condivisa의 생성에 실행될 전해지고 특정 방법 (Variabile_Condivisa)를 식별합니다.

그렇다면 우리는 우리의 프로그램에 VAR Variabile_Condivisa (객체가 프로그램 내에서 참조할 수있는 일련의 특정 요소를 나타내는 반면 클래스는, 일반적인 특성을 가진 개체의 컬렉션을 나타냅니다라는 이름의 객체 유형을 생성합니다 )이 같은 :



 Variabile_Condivisa Variabile_Condivisa VAR = 새로운 ();

우리는 이제 VAR 공유 데이터의 관리에 아무런 문제가 없다는 것을 보장할 수있는 거지? 자바 언어는 매개 변수로 모든 객체를 받아 동기화된 키워드를 (또는 키워드)를 제공합니다. 예제와 같이이 구분하는 가능 동기화를 통해 코드의 블록 :


 동기 (VAR)



 {

  

 / / 코드 분리의 블록 (VAR)을 동기화
  


 }

동기화된 블록에 포함된 지침을 수행하기 전에 모든 스레드가 변수 VAR에 잠금을 획득하거나 잠금이 출시될 때까지 코드의 동일한 블록에 대한 모든 추가 액세스를 차단하거나, 전체 블록을 실행한 후까지 중괄호에 의한 코드로 분리 예.

즉, 실행되는 첫 번째 스레드는 (우리가 먼저 전화 상상하는) 동기 (VAR) 실제로 처음으로 완료되지 않은 때까지 동기화 진술 (VAR)을 실행하는 다른 스레드를 방지 장벽을 만듭니다 코드 블록 분리의 실행 동기. 이러한 블록에 삽입한 다음 지침은 공유 데이터를 읽거나 쓸 수 있습니다.

이렇게 그것은 상호 배제를 보장 즉, 그것은 한 번에 하나의 스레드가 공유 변수에 액세스할 수있다는 보장된다. 그것이 개체가 동기화에 대한 매개 변수로 전달되어야하는 신중을 선택할 필요가 있지만합니다. 사실 당신이이 사건에서와 같이 예를 들어 상호 제외 메커니즘을, 만들 사이의 모든 스레드에 대한 일반적인 객체 여야 변수 자체는 당신이 읽거나 수정할 싶습니다.

이 시점에서, 당신이 우리의 프로그램을 설정하려면다고 상상 보류 입고되는 변수 VAR의 가치를 읽고, 오로지 그들의 요청에 따라 첫 번째 업데이트 후 결과를 평가하고자하는 스레드. 당신이 읽기와 쓰기 사이의 동기화 메커니즘을 정의하려는 상상해보십시오.

코스
리눅스 강좌 리눅스 강좌
오픈 소스 시스템에 완전한 가이드. 39 €부터 시작.
PHP 강좌 PHP 강좌
동적 웹 사이트를 만드는 전체 과정. 49 €부터 시작.
코스 루비와 레일에 루비 코스 루비와 레일에 루비
루비와 RoR로 소프트웨어와 웹 애플 리케이션을 생성. 49 €부터 시작.
참고 ...
광고

cpclubpenguincheatscp.com

광고
회사 소개
미국의 소리 접촉하기
공동 작업
면책 조항
© 2003년에서 2012년까지 cpclubpenguincheatscp.com - 이탈리아 웹마 스터의 포털 - 판권 소유 |에 의해 구동 인터넷 미디어 IKIweb Srl - PIVA 02848390122