면접 실습 의 총화.

4935 단어 면접시험
디자인 모드
단일 디자인 모델
1. 배 부 른 남자 모드
public class Singleton {

	

	public static Singleton instance=new Singleton();

	private Singleton(){}; //       ,           

	public static  Singleton getInstance(){

		

		if(instance==null){

			instance = new Singleton();

		}

		return instance;

		

	}

}


배 부 른 모드 는 다 중 스 레 드 에 적용 되 지 않 습 니 다. 예 를 들 어 스 레 드 A 가 인 스 턴 스 를 얻 으 려 면 인 스 턴 스 가 비어 있 고 스 레 드 B 도 인 스 턴 스 를 예화 해 야 합 니 다. 이때 두 개의 인 스 턴 스 대상 이 있 습 니 다.
 
2. 배 고 픔 모드
public class Singleton {

	

	public static Singleton instance=null;

	private Singleton(){}; 

	public static synchronized Singleton getInstance(){

		

		if(instance==null){

			instance = new Singleton();

		}

		return instance;

		

	}

}

 배 고 픔 모드 와 배 부 른 땀 모드 의 유일한 차 이 는 synchronized 를 추가 하 는 것 입 니 다. synchronized 를 더 한 후에 스 레 드 의 상호 배척 방문 getInstance () 방법 을 실현 하여 스 레 드 안전 을 확보 하 는 것 입 니 다.
synchronized 는 스 레 드 가 synchronized 수식 을 호출 하 는 방법 을 말 합 니 다. synchronized 는 현재 대상 을 잠 그 고 싶 은 다른 대상 은 현재 대상 synchronized 가 수 정 된 코드 를 기다 리 고 있 습 니 다.
 
 -------------------------
질문
스 레 드 1, 스 레 드 2 에 AB 자물쇠 가 두 개 있 습 니 다.스 레 드 1 라인 A 잠 금 후 B 잠 금, 스 레 드 2 먼저 B 잠 금 후 A 잠 금 을 잠 그 고 동시에 진행 합 니 다.
wait 가 대응 하지 않 으 면 notify 도 잠 금 이 생 길 수 있 습 니 다.
3. 다 중 스 레 드 wait sleep 차이
sleep  Thread 류 의 정적 방법 입 니 다. sleep (xxx) 는 스 레 드 를 휴면 시 키 는 xx millis 밀리초 에 사용 되 지만 대상 자 물 쇠 는 여전히 존재 합 니 다 (자 도 자 물 쇠 를 안 고 있 습 니 다)
wait 는 object 류 의 방법 입 니 다. wait 호출 후 잠 겨 있 는 스 레 드 는 잠 금 을 잠시 포기 하고 다른 스 레 드 가 notify 방법 을 호출 할 때 까지 잠 금 을 계속 빼 앗 습 니 다.
wait 자신 이 호출 할 때 다른 스 레 드 를 깨 우 는 데 사용 할 notify / notifyall 을 설정 해 야 합 니 다.
동기 화 구현 용 synchronized  혹은 wait 결합 notify
4. 자바 시 뮬 레이 션 스 택 의 실현
public class ArrayStack { Object [] array; int top; int size; int count; public ArrayStack(int size){ this.size = size; this.top=-1; //       ++  0 this.count=0; array = new Object[size]; } /** *      */ public void push(Object obj){ if(isFull()){ System.out.println("   ,    "); return ; }else{ top++; count++; this.array[top]=obj; } } /** *      */ public Object pop(){ if(isEmpty()){ System.out.println("   ,        "); } count--; return this.array[--top]; } /** *         */ public boolean isEmpty(){ return this.count==0; } /** *         */ public boolean isFull(){ return this.count==size; } }

좋은 웹페이지 즐겨찾기