《 나 는 병발 을 모른다 》 너 는 왜 아직도 라인 의 안전 을 모 르 니?

1. 스 레 드 안전 이란 무엇 입 니까?

예: 다음 프로그램 은 라인 이 안전 합 니까?
public class RunnableImpl implements  Runnable{
     
    private int numbers= 100;
    @Override
    public void run() {
     
        while(true){
     
                if(numbers>0){
     
                    try {
     
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
     
                        e.printStackTrace();
                    }
                    numbers--;
                }
            }
        
    }
}

2. 라인 안전 을 해결 하 는 일반적인 수단
  • 자물쇠 (synchronized, volatile, Lock)
  • 대기 열 (패키지 에 제 공 된 Atomic 원자 류)
  • 2. 자바 의 클래스 나 집합 은 스 레 드 가 안전 합 니까?
    클래스: String, Integer, Long, StringBuffer, Properties.집합: vector, statck, hashtable, enumeration.
    시험 장소:
  • stringBuffer 는 스 레 드 가 안전 하고 stringBuilder 는 스 레 드 가 안전 하지 않 습 니 다.
  • hashtable 은 라인 이 안전 한 (동기 화 메커니즘) 입 니 다.hashmap 는 스 레 드 가 안전 하지 않 습 니 다. hashtable 은 빈 값 을 삽입 할 수 없습니다. hashmap 은 허용 합 니 다


  • 3. 절대 스 레 드 안전 클래스 (list, set) CopyOnWriteArrayList, CopyOnWriteArraySet (소스 코드 를 봐 야 한 다 는 것 을 깊이 이해)
    시험 장소: 안전 한 List List list = Collections. synchronizedList (new ArrayList () 를 작성 합 니 다.

    좋은 웹페이지 즐겨찾기