2010-04-08 3 views
1

자바의 직렬화와 동기화의 차이점은 무엇입니까? 나는 설명이나 튜토리얼이 필요하다.자바에서 직렬화와 동기화의 차이점은 무엇입니까?

+6

(많이) 짧은 목록을 만들 수있는 유사점 나열 ... 그들은별로 관련이없는 주제입니다 –

+6

이름의 첫 글자와 마지막 글자를 제외한 모든 글자가 다릅니다. –

답변

9

동기화는 멀티 스레딩을 나타냅니다. 동기화 된 코드 블록은 한 번에 하나의 스레드에 의해서만 실행될 수 있습니다.

직렬화 란 저장 또는 전송을 위해 개체를 비트 스트림으로 변환하는 것을 의미합니다. 직렬화 작업은 특정 규칙에 따라 데이터를 인코딩합니다. 이 비트 스트림은 나중에 또는이를 수신하는 원격 시스템에서 직렬화 해제 할 수 있습니다. 직렬화가 작동하려면 클래스 정의가 일치해야합니다 (즉, 클래스의 동일한 버전이나 호환 가능함이 보장되어야 함). 클래스는 Serializable 인터페이스를 구현해야합니다.

자세한 내용은 serialization입니다. synchronization

+2

+1; 몇 가지 추가 발언. 우선, 직렬화라는 용어는 때로는 동시에 처리하지 않고 요청 *을 처리하는 컨텍스트에서 사용됩니다. 그것 이외에, 나는 자바 객체가 비트 스트림보다는 바이트 스트림으로 직렬화된다고 말할 것이다. AFAIK, 출력은 항상 바이트 정렬됩니다. –

0

직렬화에

더 많은 개체를 복용하고 프로그램의 범위를 벗어난 무언가에 덤핑 (예 : 문자열 또는 XML 파일)

동기화가 다른 실행중인 스레드를 갖는 개념이다 예를 들어 공유 리소스를 동시에 사용하지 않도록 서로 동기화하십시오.

(당신이 직렬화에 동일한 개체를 필요로 두 개의 스레드를 동기화하는 방법에 대한 질문을하지 않는 한) 지금까지 내가 이러한 용어는 공통점이 거의가 알고있는

0

동기화가 동시성 문제는, 예를 들어, 어떻게 여러 스레드에서 개체에 대한 액세스를 조정합니까.

여기에서 화살표는 액세스를 나타냅니다.

      s 
[thread1] ---------------> y 
          n [shared object] 
[thread2] ---------------> c 
          h 

연속화는 데이터 구조와 개체를 저장/전송하고 다시 데이터 구조와 개체로 변환 할 수있는 일련의 비트로 변환합니다.

여기에서 화살표는 변환을 나타냅니다.

  deserialization 
      <--------------- 
    [object]     [binary] 
      ---------------> 
      serialization 

이것은 비 직렬화가 다른 장소 및/또는 시간에 발생할 때 가장 유용합니다.

0

동기화를 수행하면 한 번에 하나의 스레드 만 실행되므로 교착 상태가 발생할 가능성이 없습니다.

직렬화는 객체의 상태를 저장하는 것을 의미합니다. 예를 들어 비디오 게임을 할 수 있습니다. 게임을 일시 중지하고 나중에 계속하면 게임이 다시 시작됩니다. 즉, 상태와 레벨이 여기에 저장되어 있습니다.

관련 문제