13-26~27 suspend(), resume(), stop()
// 구현
class MyThread implements Runnable {
volatile boolean suspended = false; // 쉽게 바뀌는 변수
volatile boolean stopped = false;
Thread th;
MyThread(String name){
th = new Thread(this, name); // Thread(Runnable r, String name)
}
public void run() {
while(!stopped) {
if(!suspended) {
/* 쓰레드가 수행할 코드를 작성 */
System.out.println(Thread.currentThread().getName());
try{
Thread.sleep(1000);
} catch(InterruptedException e) {}
}
}
}
public void suspend() { suspended =true; }
public void resume() { suspended =false; }
public void stop() { stopped = true; }
}
// 사용
public practice {
public static void main(String args[]){
MyThread th1 = new MyThread("*");
MyThread th2 = new MyThread("**");
MyThread th3 = new MyThread("***");
th1.start();
th2.start();
th3.start();
try {
Thread.sleep(2000);
th1.suspend(); // 쓰레드 th1을 잠시 중단시킨다.
Thread.sleep(2000);
th2.suspend(); // 쓰레드 th2를 잠시 중단시킨다.
Thread.sleep(3000);
th1.resume(); // 쓰레드 th1을 다시 동작시킨다.
Thread.sleep(3000);
th1.stop(); // 쓰레드 th1을 강제 종료시킨다.
th2.stop(); // 쓰레드 th2를 강제 종료시킨다.
Thread.sleep(2000);
th3.stop(); // 쓰레드 th3를 강제 종료시킨다.
} catch (InterruptedException e) {}
}
}
volatileReference
この問題について(13-26~27 suspend(), resume(), stop()), 我々は、より多くの情報をここで見つけました https://velog.io/@oyeon/13-2627-suspend-resume-stopテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol