반응형

java

    java HashSet 설명 및 예제

    Hashset HashSet은 Set인터페이스를 구현한 가장 대표적인 컬렉션이며, Set인터페이스의 특징대로 HashSet은 중복된 요소를 저장하지 않는다. HashSet은 저장 순서를 유지하지 않기때문에 저장순서를 유지하고 싶은경우에는 LinkedHashSet을 사용하면 된다.(JDK 1.4 부터 추가됨) 사용예 public static void main(String args[]) { Set set = new HashSet(); for(int i=0;i

    Comparable vs Comparator

    Comparable vs Comparator - Comparable은 기본 정렬기준을 구현하는데 사용한다.- Comparator은 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용된다. - 오버라이딩 하지 않고 그냥 compare를 사용한다면 그게 Comparable이다. Class 클래스명 implements Comparator{public int compare(Object o1, Object o2){Comparable c1 = (Comparable) o1;Comparable c2 = (Comparable) o2;return c1.compareTo(c2) * -1 ; // -1을 곱하면 내림차순으로 정렬이 된다. }}

    java stringtokenizer 예제

    tringTokenizer(String str, String delim) : 문자열 str을 지정된 구분자로 나누는 StringTokenizer를 생성한다.int countTokens() : 전체 토큰수를 반환한다.boolean hasMoreTokens() : 토큰이 남아있는지 알려준다.String nextToken() : 다음토큰을 반환한다. ex) String source = "100, 200, 300, 400, 500";StringTokenizer st = new StringTokenizer(source, ","); while(st.hasMoreTokens()){System.out.println(st.nextToken());}}}

    JAVA 메모리 관련 정보 GC, 메모리영역

    자바 메모리 누수 측정 방법자바 프로그램의 실제 메로리 사용량은 시스템의 작업관리자에서 나오는 메모리 사용량으로는 측정 할 수없기에 디버그 출력으로 totalMemory() - freeMemory()를 출력하거나, 개발 도구를 사용하여 측정하는 것이좋다. GC 알고리즘메모리가 GC로 부터 해소가 되지 않는 루트 참조 객체(직간접적으로 참조가 되는 모드 객체)는 크게 3가지경우이다.Static 변수에 의한 객체 참조모든 현재 자바 스레드 스택내의 지역 변수, 매개 변수에 의한 객체 참조JNI 프로그램에 의해 동적으로 만들어지고 제거되는 JNI global 객체 참조이러한 경우에 사용할 수 있는 객체로 분류되어 GC에서 가져가지 않아 메모리가 누수될 수 있다. 자바 메모리영역은 3가지로 구성되어 있다.Hea..

    자바 예외처리

    1. try - catch -finally 문try{// 예외가 발생할 가능성이 있는 문장들을 넣는다.} catch (Exception e){//예외처리를 위한 문장을 적는다.} finally{// 예외 발생여부에 관계없이 항상 수행되어야 하는 문장들을 넣는다.} 2. 메서드 예외 처리 메서드에 예외를 선언하려면, 메서드의 선언부에 키워드 throws를 사용해서 메서드내에서 발생할 수 있는 예외를 적어주기만 하면 된다.(예외가 여러개일 경우에는 , 쉼표로 구분한다.) void method() throws Exception1, Execption2, ... ExceptionN{} 이 메서드를 사용하려는 사람은 이메서드를 사용하기 위해서 어떤한 예외들일 처리되어야 하는지 쉽게 알수 있다. ( 자바가 가지는 장..

    멀티 스레드

    멀티 쓰레딩의 장점- CPU의 사용률을 향상시킨다.- 자원을 보다 효율적으로 사용할 수 있다.- 사용자에 대한 응답성이 향상된다.- 작업이 분리되어 코드가 간결해진다. Thread 클래스 vs Runnable 인터페이스Thread 클래스를 사용하는 방법과 Runnable 인터페이스를 구현하는 방법 두가지가 있다.- Thread클래스를 상속받으면 다른 상속이 불가능 하기에 대체로 Runnable인터페이스를 사용한다. - Runnable 인터페이스를 구현하는 방법이 재사용성이 높고 코드의 일관성을 유지할 수 있는 장점이 있다.- Runnable 인터페이스는 run()메서드만 정의되어있는 간단한 인터페이스이다.- Thread 클래스를 상속받으면, Thread 클래스의 메소드를 직접 호출할 수 있지만 .Runn..

    쓰레드 개념정리

    쓰레드의 스케줄링과 관련된 메서드void interrupt() : sleep()이나 join()에 의해 일시정지상태인 쓰레드를 실행대기 상태로 만든다.void join(), join(long millis) : 지정된 시간동안 쓰레드가 실행되도록 한다. / 해당 쓰레드가 종료될때 까지 main 쓰레드는 대기한다.void resume() : suspend()에 의해 일시정지상태에 있는 쓰레드를 실행대기상태로 만든다.static void sleep(long miillis) : 지정된 시간 동안 쓰레드를 일시정지 시킨다. 시간이 지난후 다시 실행대기상태가 된다.void stop() : .쓰레드를 즉시 종료신킨다.void suspend() : 쓰레드를 일시정지 시킨다.static void yield() : 실행중..

    JAVA 데몬 스레드 소개

    데몬 쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행하는 쓰레드이다. boolean isDeaemon() 쓰레드가 daemon 쓰레드 인지 확인void setDaemon(boolean on) 쓰레드를 데몬 쓰레드로 또는 사용자 쓰레드로 변경한다. 자동저장 쓰레드 프로그래밍 package javas; import javax.swing.JOptionPane; public class Thread1 { static boolean autoSave = false; public static void main(String args[]) { Runnable r = new Thread_1(); Thread t1 = new Thread(r); t1.setDaemon(true); t1.start(); for (..

    Thread wait(), notify() 소개

    문제점하나의 쓰레드가 객체에 lock 을 걸고 어떤 조건이 만족될 때까지 기다려야 하는 경우, 이 쓰레드를 그대로 놔두면 이 객체를 사용하려는 다른 쓰레드들은 lock이 풀릴 때 까지 같이 기다려야 하는 상황이 발생 해결책 이런 비효율을 개선하기 위해서 wait()와 notify()를 사용한다. 한 쓰레드가 객체에 lock을 걸고 오래 기다리는 대신 wait()을 호출해서 다른 쓰레드에게 제어권을 넘겨주고 대기상태로 기다리다가 다른 쓰레드에 의해서 notify() 가 호출 되면 다시 실행 상태가 되도록 하는 것이다. wait(), notify(), notifyAll()- object 클래스에 정의된 메소드이므로 모든 객체에서 호출이 가능하다.- 동기화 블록(synchronized블록) 내에서만 사용이 가..

    Thread 크리티컬 세션

    쓰레드가 같은 부분을 공유하여 멀티프로세스보다 훨씬 좋은 장점을 가지고 있다 그러나 그 만큼 같은 부분을 공유하기 때문에 문제가 생기는 경우가 있다. 그래서 해당 쓰레드가 그 부분을 사용하고 있다면 다른 쓰레드가 접근할 수 없도록 하는 동기화 작업이 필요하다. Log를 남기는 작업을 하는 프로그램을 살펴보자 import java.io.*;import java.util.*; public class LogFile{private Writer out; public LogFile(File f) throws IOException{ FileWriter fw = new FileWriter(f); this.out = new VufferedWriter(fw);} public void writeEntry(String mes..

반응형