목록Java (181)
충분히 쌓여가는
쓰레드의 구현 ① Thread 클래스를 상속 class MyThread extends Thread { public void run() { // Thread 클래스의 run()을 오버라이딩 /* 작업내용 */ } } MyThread t1 = new MyThread(); // 쓰레드의 생성 t1.start(); // 쓰레드의 실행 ② Runnable 인터페이스를 구현 class MyThread2 implements Runnable { public void run() { // Runnable 인터페이스의 추상메서드 run()을 구현 /* 작업내용 */ } } Runnable r = new MyThread2(); Thread t2 = new Thread(r); // Thread(Runnable r) // Thr..
프로세스와 쓰레드(process & thread) 프로세스: 실행 중인 프로그램, 자원(resources)과 쓰레드로 구성 쓰레드: 프로세스 내에서 실제 작업 수행, 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다 싱글 쓰레드 프로세스 = 자원 + 쓰레드 멀티 쓰레스 프로세스 = 자원 + 쓰레드 + 쓰레드 + ... 하나의 새로운 프로세스를 생성하는 것보다, 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 든다 프로세스(2) 쓰레드(1) => 쓰레드 2개 vs 프로세스(1) 쓰레드(2) => 쓰레드 2개 같은 쓰레드 개수라면 멀티쓰레드를 사용하는 것이 효율적이다 멀티쓰레드의 장단점 대부분의 프로그램이 멀티쓰레드로 작성되어 있지만 멀티쓰레드 프로그래밍이 장점만 있는 것은 아니다 장점 단점 시스템 ..
애너테이션 타입 정의하기 애너테이션을 직접 만들어 쓸 수 있다 @interface 애너테이션이름 { 타입요소이름(); // 애너테이션의 요소를 선언한다 ... } 예시 @interface DateTime { String yymmdd(); String hhmmss(); } 애너테이션의 메서드는 추상 메서드이며, 애너테이션을 적용할 때 지정(순서 X) @interface TestInfo { int count(); String testBy(); String[] testTools(); TestType testType(); // enum TestType { FIRST, FINAL } DateTime testDate(); // 자신이 아닌 다른 애너테이션(@DateTime)을 포함할 수 있다 } 사용 @TestIn..
메타 애너테이션 애너테이션을 위한 애너테이션 java.lang.annotation 패키지에 포함 애너테이션 설명 @Target 애너테이션이 적용가능한 대상을 지정하는데 사용한다 @Documented 애너테이션 정보가 javadoc으로 작성된 문서에 포함되게 한다 @Inherited 애너테이션이 자손 클래스에 상속되도록 한다 @Retention 애너테이션이 유지되는 범위를 지정하는데 사용한다 @Repeatable 애너테이션을 반복해서 적용할 수 있게 한다 @Target 애너테이션을 정의할 때, 적용대상 지정에 사용 @Target ({ TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE } ) @Retention(RetentionPolicy.SOURCE..