아래 내용은 어느책에서 참고했던 건데 정확한 책 명칭이 생각이 안난다. 혹시 아시는 분이 계시면 메일이나 덧글을 달아주세요. ^^
http://ospace.tistory.com/(ospace114@empal.com) 2008.07.24
주의: 가져가실때에는 출처를 명시해주세요.
쓰레드 TIME-WAITING 상태로 들어가기
public class TestClass extends Thread {
public TestClass() {
new TestClass().start();
}
public void run() {
while(true) {
sleep(100); // milliseconds
}
}
}
Enumerating Thread
단순히 쓰레드들을 생성하고 생성된 쓰레드에 대한 조회
public void printThread() {
Thread ths[] = new Thread[Thread.activeCount()];
int n = Thread.enumerate(ths);
for (int i = 0; i<n; i++) {
System.out.println("Thread " + i + " is " + ths[i].getName());
}
}
여러 쓰레드 객체 Join
pubic class JoinApplet extends Applet {
Thread t[] = new Thread[30];
public void start() {
for (int i = 0; i<30; i++) {
t[i] = new CalcThread(i);
t[i].start();
}
}
public void stop() {
for(int i=0; i<30; i++) {
try {
t[i].join();
} catch (InterruptedException e) { }
}
}
}
동기화 메소드
public synchrnoized boolean deduct(float t) {
//...
}
뮤텍스(mutex lock): 상호배제 락(mutually exolusive lock)
한번 정지된 쓰레드는 다시 시작할 수 없다. 다시 생성해서 시작해야된다.
현재 쓰레드 객체 얻기 메소드
static Thread cuurentThread()
ex)
Thread.currentThread().getName()
서로다른 두 메소드를 동기화하는 법 -> 락은 메소드가 아닌 객체형태로 존재
//BusyFlag클래스
public class BysyFlag {
protected Thread busyFlag = null;
public void BusyFlag(Thread thread) { ... }
public void getBusyFlag() {
while(busyFlag != Thread.currentThread()) {
if(busyFlag == null)
busyFlag = Thread.currentThread();
try {
Thread.sleep(100);
} catch(Exception e) {}
}
}
public void freeBushFlag() {
if(busyFlat == Thread.currentThread())
busyFlag = null;
}
}
이게 점제적 버그가 있다고 하내요. 아무튼 참고정도 하세요.
반응형
'3.구현 > Java or Kotlin' 카테고리의 다른 글
[ibatis] 리스트형 데이터 사용해서 쿼리 작성하기(iterate) (0) | 2016.11.10 |
---|---|
JSP 간단하게 시작하기... (0) | 2008.12.05 |
Java 쓰레드 상태 (0) | 2008.07.24 |
Jar 패키징(Packaging) (0) | 2008.07.21 |
Reactor 패턴의 예제 코드 (0) | 2008.07.17 |