같거나 다른 객체의 자바 스레드에 관한 혼란

Adeel Asghar
public class Computation extends Thread {

    private int num;
    private boolean isComplete;

    public Computation(int nu) {
        num = nu;
    }

    public void run() {
        System.out.println("Thread Called is: " + Thread.currentThread().getName());
    }

    public static void main(String... args) {
        Computation [] c = new Computation[4];
        for (int i = 0; i < 3; i++) {
            c[i] = new Computation(i);
            c[i].start();
        }
    }
}

내 질문은 스레드가 시작될 때마다 새 Computation 객체를 생성하는 주 함수에 있는데 왜 run 메서드를 snchrnoized해야합니까? 모든 다른 클래스 객체에 대해 알고 있듯이 'this'참조는 다르므로 동기화 할 필요가 없습니다.

또한 다른 예에서 :

public class DiffObjSynchronized implements Runnable {

    @Override
    public void run() {
        move(Thread.currentThread().getId());           
    }

    public synchronized void move(long id) {
        System.out.print(id + " ");
        System.out.print(id + " ");
    }

    public static void main(String []args) {
        DiffObjSynchronized a = new DiffObjSynchronized();
        /**** output ****/
        // 8    9   8   9
        new Thread(a).start();
        new Thread(new DiffObjSynchronized()).start();
    }
}

다음은 두 번째 클래스 인스턴스에 대해 스레드를 처음 만드는 것과 같은 두 번째 예제입니다. 여기서는 move () 메서드를 동기화하지만 정의에 따라 "두 개의 다른 개체가 동시에 동기화 된 메서드에 들어갈 수 있습니다."

피드백을 공유해주세요.

보안

내가 당신을 올바르게 이해한다면, 당신의 질문은 "왜 move방법이 동기화되어 있는가?"입니다.

대답은 다음과 같은 두 가지 이유로 인해 안됩니다.

  1. 필드에 액세스하지 않으므로 해당 메서드 내에 한 번에 많은 스레드가있어 손상 될 수있는 것은 없습니다.

  2. 각 스레드는 객체의 다른 인스턴스를 가져 오므로 다른 잠금을 갖습니다. 따라서 동기화 된 수정자는 차이가 없습니다. 각 스레드 move는 별도의 잠금을 가지고 있기 때문에 자체 인스턴스의 메서드를 계속 입력 할 수 있습니다 .

스레드간에 공유되는 데이터가 있고 하나 이상의 스레드가 해당 데이터를 수정하는 경우에만 동기화하면됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자바 스크립트 객체의 도트 방식에 대한 혼란

분류에서Dev

나는 다중 스레드 자바에서 정적 인 방법을 사용하는 방법에 대한 혼란 스러워요?

분류에서Dev

객체 및 함수 자바 스크립트 사용에 대한 혼란

분류에서Dev

자바에서 다른 클래스 객체의 스레드

분류에서Dev

자바의 다중 상속에 대한 혼란. 아래를 읽어보세요.

분류에서Dev

암시 적 contructors 및 생성자 체인에 관한 혼란

분류에서Dev

자바에서 객체가 생성되는 방식에 대한 혼란

분류에서Dev

객체의 객체를 반복 한 다음 자바 스크립트의 다른 객체에 속성 추가

분류에서Dev

프로젝트 원자로의 flatMap의 스레드에 대한 혼란

분류에서Dev

자바의 약한 참조에 대한 혼란

분류에서Dev

자바 스트림 : 한 객체의 목록을 다른 객체로 변환

분류에서Dev

자바의 동기화에 대한 이해와 혼란

분류에서Dev

자바 스크립트에서 동일한 객체로 하나의 객체 속성을 푸시합니다.

분류에서Dev

자바 스크립트의 indexOf 혼란

분류에서Dev

관계형 대수와 혼란스러운 하나의 복잡한 예

분류에서Dev

자바 스크립트의 if 문에 대해 혼란스러워합니다.

분류에서Dev

자바 스크립트의 익명 함수 선언에 대한 혼란

분류에서Dev

ID가 ""인 객체는 GAE의 JPA의 동일한 메소드에서 여러 JpaRepository를 호출 할 때 다른 객체 관리자가 관리합니다.

분류에서Dev

한 객체의 값만 속성 자바 스크립트가 아닌 다른 객체로 복사

분류에서Dev

자바 스크립트에서 객체 지향 DOM 조작의 혼란스러운 문제

분류에서Dev

장고의 다 대다 관계; 한 객체에서 다른 객체로 참조

분류에서Dev

파일이 같은 이름의 폴더로 바뀌었기 때문에 Git이 혼란 스러웠습니다.

분류에서Dev

혼란스러운 바인딩. 개체를 다른 개체에 바인딩하는 방법?

분류에서Dev

나는 상거래의 index.html.erb와 관련된 layout.html.erb의 deface에 대해 혼란스러워합니다.

분류에서Dev

C #의 다운 캐스트에 대한 혼란

분류에서Dev

파이썬의 스레드와 관련된 혼란

분류에서Dev

ektron 페르소나 관리에 대한 혼란

분류에서Dev

자바 스크립트 : Infinity 사용에 대한 혼란

분류에서Dev

ZF2-관리자에 대한 혼란

Related 관련 기사

  1. 1

    자바 스크립트 객체의 도트 방식에 대한 혼란

  2. 2

    나는 다중 스레드 자바에서 정적 인 방법을 사용하는 방법에 대한 혼란 스러워요?

  3. 3

    객체 및 함수 자바 스크립트 사용에 대한 혼란

  4. 4

    자바에서 다른 클래스 객체의 스레드

  5. 5

    자바의 다중 상속에 대한 혼란. 아래를 읽어보세요.

  6. 6

    암시 적 contructors 및 생성자 체인에 관한 혼란

  7. 7

    자바에서 객체가 생성되는 방식에 대한 혼란

  8. 8

    객체의 객체를 반복 한 다음 자바 스크립트의 다른 객체에 속성 추가

  9. 9

    프로젝트 원자로의 flatMap의 스레드에 대한 혼란

  10. 10

    자바의 약한 참조에 대한 혼란

  11. 11

    자바 스트림 : 한 객체의 목록을 다른 객체로 변환

  12. 12

    자바의 동기화에 대한 이해와 혼란

  13. 13

    자바 스크립트에서 동일한 객체로 하나의 객체 속성을 푸시합니다.

  14. 14

    자바 스크립트의 indexOf 혼란

  15. 15

    관계형 대수와 혼란스러운 하나의 복잡한 예

  16. 16

    자바 스크립트의 if 문에 대해 혼란스러워합니다.

  17. 17

    자바 스크립트의 익명 함수 선언에 대한 혼란

  18. 18

    ID가 ""인 객체는 GAE의 JPA의 동일한 메소드에서 여러 JpaRepository를 호출 할 때 다른 객체 관리자가 관리합니다.

  19. 19

    한 객체의 값만 속성 자바 스크립트가 아닌 다른 객체로 복사

  20. 20

    자바 스크립트에서 객체 지향 DOM 조작의 혼란스러운 문제

  21. 21

    장고의 다 대다 관계; 한 객체에서 다른 객체로 참조

  22. 22

    파일이 같은 이름의 폴더로 바뀌었기 때문에 Git이 혼란 스러웠습니다.

  23. 23

    혼란스러운 바인딩. 개체를 다른 개체에 바인딩하는 방법?

  24. 24

    나는 상거래의 index.html.erb와 관련된 layout.html.erb의 deface에 대해 혼란스러워합니다.

  25. 25

    C #의 다운 캐스트에 대한 혼란

  26. 26

    파이썬의 스레드와 관련된 혼란

  27. 27

    ektron 페르소나 관리에 대한 혼란

  28. 28

    자바 스크립트 : Infinity 사용에 대한 혼란

  29. 29

    ZF2-관리자에 대한 혼란

뜨겁다태그

보관