본문 바로가기

공부방/Java

(9)
replaceAll 에서 Illegal group reference 처리 replaceAll 에서 치환할 값에 쿼트(")가 들어있으면Illegal group reference 에러가 발생한다.이때에는 java.util.regex.Matcher 내에 quoteReplacement 메소드로 치환할 값을 바꿔주면 된다. String replaceVal= ""; String baseVal = "ocmTagParseURLGetParameter(window.location.href, $KEYIN_VALUE$)"; Matcher.quoteReplacement(replaceVal); System.out.println(baseVal.replaceAll("[$]KEYIN_VALUE[$]", "'"+Matcher.quoteReplacement(replaceVal)+"'"));
Java에서 엑셀파일 읽고 쓰기 API 운용 방법 : http://www.andykhan.com/jexcelapi/tutorial.html API 다운로드 : http://www.andykhan.com/jexcelapi/download.html
자바 쓰레드의 resume, suspend, stop 구현 자바 언어가 1.x 에서 2.x 대를 넘나들 시절에 thread 를 다룰때 뻔질나게 자주 쓰였던 thread 메소드가 resume, suspend , stop 인데 아쉽게도 deprecated (앞으로 쓰지 말라는 뜻) 되어서 별 수 없이 쓰레드의 상태를 관리하는 방식으로 구현을 해야 한다. 구현은 아래와 같은 간단한 코드에서 시작한다. public class ThreadHandle implements Runnable { @Overridepublic void run() { // TODO Auto-generated method stub } } Runnable을 구현한 것을 볼 수 있는데, 꼭 저렇게 할 필요는 없으나 Runnable을 implement 해주지 않으면 별도의 구현체를 클래스로 정의해야하기 때..
멀티 스레드(Thread) 구현하기 스레드(Thread) 란, 프로그램의 흐름을 말하는 것으로, 프로그램을 실행하면 main() 메서드가 호출되어 하나의 흐름(메인 스레드)이 시작되는데, 일반적으로 흐름이 하나밖에 없는 프로그램을 싱글 스레드라고 하며, 이제부터 구현해볼 흐름이 여러개인 프로그램은 멀티 스레드라고 한다. 즉, 동시에 여러개의 흐름이 동작하는 것이다. 자바에서는 멀티 스레드를 수행하기 위해서 Thread 클래스를 이용하여 새로운 스레드를 생성한다. 스레드를 만들기 위해서는 우선 Thread 클래스를 상속받는 클래스를 작성하고, run() 메서드를 오버라이딩 한다. 그리고, 그 안에 처리할 내용을 기술한다. 즉, start() 메서드와 run() 메서드는 이미 규정 되어있는 메서드이며, run() 메서드의 내용을 오버라이딩 하..
쓰레드의 Wait()와 notify()사용 /** 쓰레드의 Wait()와 notify()사용 import! static java.lang.System.out; class ATM implements Runnable{ private long deposit_Money = 10000; //잔액 private boolean flag = false; public void run(){ synchronized(this){ for(int i = 0 ; i < 10 ; i++){ try{ Thread.sleep(500); }catch(Exception e){ e.printStackTrace(); } if(getDepositMoney() 0){ deposit_Money -= lv_howmuch; out.println(Thread.currentThread().getN..
자바 쓰레드 프로그래밍 쓰레드 기초"실행중인 프로그램"을 프로세스라고한다. 그러니까 명령어를 입력해서 돌아가는 프로그램은 전부 프로세스인것이다. 프로세스에는 명령어들이 순차적으로 실행이되는데 이것을 실행 쓰레드하고 한다. 순차적으로 실행되는 명령어들을 하나의 실로 꿸 수 있기 때문이다. 이렇게 하나의 실로 꿸 수 있는 프로그램은 단일 쓰레드 프로그램이라고 한다. 그런데 어떤 프로그램에는 여러 개의 함수들이 서로 독립적으로 수행되는 경우도 있다. 이런 경우에는 명령어들이 순차적으로 수행되는 것이 아니기 때문에 하나의 실로 꿸수 없을 것이다. 이런 프로그램은 다중 쓰레드 프로그램이라고 한다. 다음 그림은 세차하는 프로그램이다. 홍길동이 스케쥴표에 나와 있는대로 세차를 하고 있다. 여기서 스케쥴표는 프로그램 명령어들이고, 스케쥴표대..
synchronized (this) ? synchronized (Class.class) ? 싱글턴 패턴을 작성하고 궁금한게 생겼다. synchronized () {} 에서 () 안에 들어가는게 .class였는데 .. 다른데 보면 this라는걸 사용하기도 한다. 그래서 차이점이 뭔지 궁금했는데 .. 여기저기 물어봐서 결국 알게 되었다. 그냥 뭐 단순하게 '지금 내 인스턴스'를 락 걸던가 .. 아니면 '.class의 모든 인스턴스'에 락을 걸것인지의 차이점이다. 이에 대한 샘플 소스는 다음과 같다. ThisSync.java view plaincopy to clipboardprint? package pupustory.sync.sample; public class ThisSync extends Thread { private final String MSG = this.toString()+"\t"; pu..
JAVA Thread 1. 쓰레드의 의미 쓰레드(Thread)란 무엇인가? 아직 쓰레드 프로그래밍을 해보지 않은 사람이라면 가끔 이런 생각을 해봤을 것이다. '프로그램을 만들 때 하나의 프로그램에서 동시에 두가지 이상의 작업이 이루어지게 하려면 어떻게 해야할까?' 예를들어 "음악이 흐르는 포토뷰어" 라는 프로그램을 생각해보자. 사진을 감상하는 프로그램인데 사진만 감상하긴 좀 밋밋해서 배경으로 음악을 깔고 싶어졌다. 사진을 보면서 음악을 듣는 것에 그치는게 아니라 사진을 넘기고 음악을 바꾸는 작업이 동시에 이루어져야 한다면? 분명 지금까지의 만들어본 프로그램은 main 함수라는 하나의 흐름에 의해 모든것이 이루어 졌을 것이다. 하지만 이젠 사진도 흘러가야하고 음악도 흘러가야 하게 된 것이다. 이렇게 하나의 프로그램 안에 둘 이..