Knowledge Wiki (169) 썸네일형 리스트형 JAVA 쓰레드 동기화 1. 임계영역 : 한 번에 한 개의 쓰레드만 접근 가능한 영역 synchronized로 임계영역을 설정하는 방법 2가지 public synchronized void calcSum(){ // Do Something } synchronized(참조변수){ // Do Something } 2. wait()과 notify() 동기화의 효율을 높이기 위해 사용 Object 클래스에 정의되어 있으며 동기화 블록 내에서만 사용 가능하다. wait(): 객체의 lock을 풀고 쓰레드를 해당 객체의 waiting pool에 넣는다 notify(): waiting pool에서 대기중인 쓰레드 중의 하나를 깨운다. notifyAll(): waiting pool에서 대기중인 모든 쓰레드를 깨운다. Customer 쪽에서는 자.. JAVA 쓰레드 1. 쓰레드의 구현과 실행 1) Thread 클래스를 상속 2) Runnable 인터페이스를 구현 2. JAVA는 쓰레드의 우선순위를 1~10으로 구분한다 JVM에서 정한 게 1~10 실제 OS인 Windows는 32 단계 JVM에서 정한 우선 순위는 희망 사항이어서 반드시 이 순위가 지켜지진 않음. JVM이 OS는 아니기 때문에. 3. 데몬 쓰레드(daemon thread) 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행 일반 쓰레드가 모두 종료되면 자동적으로 종료된다. 반대로 말하면 일반 쓰레드는 자동적으로 종료되지 않음. ex) 가비지 컬렉터(GC), 자동저장, 화면 자동갱신 등 4. 데몬 쓰레드는 보통 무한루프로 구현 프로그램이 언제 종료될지 모르니까. 5. 쓰레드 sleep() 예외 처리를 해야.. JAVA Runtime 에러를 줄이기 위한 노력 1. Runtime 에러를 줄이기 위한 초기화 노력 String str = null; // X String str = ""; // O Object[] objArr = null; // X Object[] objArr = new Object[0]; // O Object[] objArr = { }; // O JAVA 제네릭 1. 제네릭 Runtime 에러를 컴파일 에러 수준에서 catch하려는 노력. 제네릭을 쓰면 타입 체크가 강화됨 객체의 타입 안정성을 높이고 형 변환의 번거로움을 줄여줌. 형변환 잘못할 시 ClassCastException()이 발생하는 데 이 예외를 컴파일 단계에서 차단할 수 있음. ArrayList list = new ArrayList(); // JDK 1.5 이전, 제네릭 도입 이전 ArrayList list = new ArrayList(); // JDK 1.5 이후 2. 제한된 제네릭 클래스 extends 키워드로 대입할 수 있는 타입을 제한 class FruitBox{ ArrayList list = new ArrayList(); } FruitBox appleBox = new FruitBox();.. JAVA 해싱(Hashing) 1. 해싱(Hashing) 해시 함수로 해시 테이블에 데이터를 저장 & 검색 해시 테이블은 배열과 링크드 리스트가 조합된 형태 JAVA Collections 패키지 1. Collections 패키지는 여러 static 메소드를 제공해준다. synchronizedXXX(); // 동기화 되지 않은 컬렉션 -> 동기화된 컬렉션 unmodifiableXXX(); // 변경 가능한 컬렉션 -> 변경불가능한 컬렉션 singletonXXX(); // 객체 1개만 저장 checkedXXX(); // 한 종류이 객체만 저장 List syncList = Collections.synchronizedList(new ArrayList(...)); // 동기화 되지 않은 List -> 동기화된 List unmodifiableList = Collections.unmodifiableList(new ArrayList(...)); // 변경 가능한 List -> 변경불가능한 List 2. Col.. JAVA Comparable, Comparator 1. Comparable과 Comparator Comparable: (정렬 기준이 없는 경우)기본 정렬 기준을 구현하는데 사용 Comparator: 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용 JAVA Iterator 1. Iterator Iterator는 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 Iterator는 1회용이라 한 번 쓰고 나면 다시 얻어와야 한다. Iterator는 new버전이고, Enumeration은 old버전이다. Iterator랑 Enumeration은 거의 비슷 ListIterator는 Iterator의 접근성을 향상시킨 것(단방향 -> 양방향). ListIterator는 잘 쓰지 않음. Map에는 iterator()가 없다. keySet(), entrySet(), values()를 호출해야 한다 Iteartor it = map.entrySet().iterator(); 이전 1 ··· 14 15 16 17 18 19 20 ··· 22 다음