이펙티브 자바를 보다 보면, 표준 예외를 사용하라는 item이 있습니다. 여기에 언급되는 exception들을 보면 Collections에서도 자주 보이는 예외가 몇 개 있는데요. 이번 시간에는 이 중에 UnsupportedOperationException에 대해서 보도록 하겠습니다. 저번에 예를 들었던 것 중에, CopiesList를 들고 오겠습니다. 이것은 AbstractList를 상속받는다고 되어 있어요. 명세를 보면, immutable list를 리턴한다고 되어 있어요. 저번에 본 바로는 CopiesList가 Collection 내부에 private 클래스로 되어 있었어요. 그리고, 계속 읽어보면, n copies of the specified Object라고 되어 있는데요. 특수 오브젝트의 n개..
자바 검색 결과
System.gc 함수를 쓰지 말라는 이야기는 많이 듣곤 합니다. 왜 그럴까요? 예제 프로그램을 보겠습니다. class A가 있고, 이 클래스 내부에는 finalize가 오버라이딩 되어 있습니다. 이 메서드 안에 들어오면 shared.count가 하나 증가합니다. 정리를 하면, 객체 A가 정리가 되면, shared 클래스 내부에 있는 클래스 변수인 count가 하나 증가합니다. 그리고 class A 안에는 int형 배열 10개가 있습니다. 이제 Main 클래스의 main 메소드를 보겠습니다. 크게 어려운 것은 없어 보입니다. 10개의 객체 A 참조값을 저장할 수 있는 배열을 선언합니다. 그리고, 2만번의 loop를 돌 때 마다, 배열 A에 새로운 A의 참조값 10개를 넣습니다. 이를 그림으로 표현하면 위..
자바에는 instanceof 연산자가 있습니다. 무엇일까요? String 클래스의 equals 메서드를 보겠습니다. anObject는 Object 객체를 참조하는 변수입니다. 980번째 줄을 보면, anObject instanceOf String 이라고 되어 있습니다. anObject가 String 인스턴스인지 확인하겠다는 것입니다. 그런데 왜 하필? 일단, 우리는 anObject가 Object 참조형이라는 것을 볼 필요가 있는데요. Object는 최상위 루트 부모입니다. 그러면, String도 Object를 상속받은 거고, MyObj1도 Object를 상속받은 것이라고 할 수 있어요. 그러면 String은 Object라고 할 수 있나요? 네 맞습니다. 그러면 반대로, Object 인스턴스는 String..
오늘은 Java의 Thread 클래스 안에 있는 join 메서드가 어떤 식으로 동작하는지 간단하게 알아봅시다. 아래 예제 프로그램을 실행시켜 봅시다. 어떻게 실행이 될까요? worker a가 실행이 끝난 후에, Main 쓰레드가 종료됩니다. 그러면, join() 함수는 특정한 스레드가 종료될 때 까지 기다릴 때 쓴다는 건데, 어떤 식으로 동작하는지는 천천히 뜯어보도록 하겠습니다. a.run()을 호출하였습니다. 그 순간, worker a가 run() 메소드를 호출하면서 돌아갑니다. 대충 그림과 같은 상황입니다. 그 다음에, Main 스레드에서는 a.join()을 호출하는데요. 여기서 무슨 일이 일어나는지만 간단하게 봅시다. join을 호출할 때, 매개 변수가 없으면 내부적으로 join(0)을 호출합니다...
최근댓글