synchronized 키워드와 ReentrantLock 클래스에 대해 DarkKaiser, 2010년 5월 5일2023년 9월 5일 출처 : http://mindwing.kr/103 synchronized 키워드 대신 java.util.concurrent.ReentrantLock 을 쓰면 다음의 잇점들이 생깁니다. lock 을 얻으려는 스레드를 interrupt 시킬 수 있다. lock 을 얻는데 대한 timeout 을 설정할 수 있다. lock 에 2개 이상의 condition 을 설정해서 쓸 수 있다. synchronized 키워드를 위해 JVM 이 사용하는 lock 기능은 하드웨어의 lock 메커니즘과 Continue Reading
wait(), notify(), notifyall() DarkKaiser, 2010년 5월 5일2023년 9월 5일 wait과 notifyall(notify) 메서드는 동기화 처리를 해서, 한 순간에 하나의 쓰레드만 호출이 가능하도록 한다. wait과 notifyAll(notify)이 서로 다른 두 쓰레드에 의해서 동시에 각각 호출되는 것 조차 허용되지 않아야 함을 뜻하는 것이다. 위의 두 메서드는 동시에 호출되면 문제가 생길 수 있는 민감한 성격의 메서드이다. 따라서 동기화 블럭 또는 도익화 메서드를 이용해서 메서드 Continue Reading
Local(지역) 클래스 & Anonymous(익명) 클래스 DarkKaiser, 2010년 5월 3일2023년 9월 6일 - Local 클래스 interface Readable { public void read(); } class OuterClass { public Readable createLocalClassInst() { class LocalClass implements Readable { public void read() { System.out.println("Outer inst name : " + myName); } } return new LocalClass(); } } - Anonymous 클래스 interface Readable { public void read(); } Continue Reading
YourKit 자바 프로파일러 DarkKaiser, 2010년 3월 19일2023년 9월 5일 홈페이지 : http://www.yourkit.com/java/profiler/ Continue Reading
Vector, ArrayList, LinkedList 의 차이점 DarkKaiser, 2009년 8월 22일2023년 9월 5일 – Vector : 구버전 호환용. 그다지 사용되지 않음. 동기화 처리가 내부적으로 일어남으로 다른 객체보다 무거움 – ArrayList : 배열의 복사에 의한 데이터 저장처리를 내부적으로 행하며, 각 데이터에 대한 인덱스를 가지고 있기 때문에 검색이 매우 빠르다. 다만 많은 데이터의 추가/삭제시에는 배열의 복사가 빈번하게 일어나, 성능이 떨어지는 단점이 있다. 동기화된 ArrayList를 사용하기 Continue Reading
String, StringBuffer, StringBuilder 차이점 DarkKaiser, 2009년 8월 22일2023년 9월 5일 자바에서 문자열을 사용할때 도움을 주는 연산자 들은 많다. 하지만 흔히 권하는 방법은 String과 StringBuffer 그리고 StringBuilder 클래스들이다. 사용할 땐 다음을 고려해주면 된다. String은 한번 선언하면 변하지 않기 때문에, 사용하려는 문자열이 변하지 않을때 사용하도록 한다. StringBuffer는 동기화방식으로 저장되기 때문에, 멀티 쓰레드(multi Thread) 환경하에서 문자열 변경시에 사용하도록 한다. StringBuilder는 비동기화방식으로 저장되기 때문에, Continue Reading
배포버젼 .jar 만들기 DarkKaiser, 2009년 5월 17일2023년 9월 6일 출처 : http://blog.naver.com/an5asis/60023239426 jar 파일의 배포버젼 만들기 작성자 : 이 상 문 작성일 : 2002. 1. 9 여러 개의 class 파일로 이뤄진 프로그램을 jar 형식의 파일로 합쳐서 배포할 수 있다. 하나의 파일로 관리할 수 있다는 장점뿐만 아니라, 압축이 되어서 용량도 더 작게 만들 수 있는 장점이 있다. 그리고, 다음에 설명할 Continue Reading
Runtime 클래스를 이용한 외부 프로그램 호출 DarkKaiser, 2009년 2월 8일2023년 9월 6일 출처 : http://www.yunsobi.com/blog/411 java.lang 패키지의 Runtime 클래스는 자바에서 외부 프로세스를 생성하는 방법을 제공한다.예를 들어 자바를 이용하여 MS 윈도우에서 MS 엑셀을 실행하는것등에 이 Runtime클래스를 이용할 수 있다. 예를 들어 C:\Program Files\Microsoft Office\Office\excel.exe 위치에 있는 excel.exe를 실행하는 코드는 아래와 같다. try { Runtime run = Runtime.getRuntime (); run.exec ( "C:\\Program Continue Reading
static initializer DarkKaiser, 2009년 2월 7일2023년 9월 6일 출처 : http://blog.naver.com/parnx/140054010993 다음은 흔히 싱글턴singleton 패턴에서 애용되는 형태의 코드이다. public class MySingleton { private static final MySingleton INSTANCE = new MySingleton(); public static MySingleton getInstance() { return INSTANCE; } private MySingleton() { // 초기화 작업… } // … Continue Reading
자바에서 조건부 컴파일 흉내내기 DarkKaiser, 2008년 4월 3일2023년 9월 6일 자바에서 C++의 조건부 컴파일 흉내를 내려면 아래와 같이 할 수 있다. public class test { static final boolean DEBUG = false; public static void main(String[] args) { System.out.println("######## 1"); if (DEBUG) { System.out.println("######## 2"); } System.out.println("######## 3"); } } 자바에서 위의 코드를 컴파일하고 나서 생성되는 .class 파일을 디컴파일 해서 보면 Continue Reading