import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class ThreadWRDemo {
public static void main(String[] args) throws IOException {
final List<String> list = new ArrayList<String>();
final Scanner s = new Scanner(System.in);
final PrintWriter writer =new PrintWriter(new FileOutputStream("ThreadWrite.txt"));
final Thread wthread = new Thread() {
public void run() {
while (true) {
if (list.isEmpty()) {
try {
writer.flush();
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println("结束了!!");
}
continue;
}
String first = list.remove(0);
writer.println(first);
}
}
};
wthread.setDaemon(true);
final Thread rthread = new Thread() {
public void run() {
while (true) {
String str = s.nextLine();
list.add(str);
if (str.equalsIgnoreCase("Q")) {
wthread.interrupt();
break;
}
}
}
};
wthread.start();
rthread.start();
}
}
为什么在rthread 线程结束后wthread 还可以运行写入操作?
而且wthread.interrupt()操作是唤醒并运行wthread 线程还是先执行完rthread 线程后在运行?????
我想问哈 为什么rthead前台线程退出时 wthread没有立即退出???
结束了!!
wthread.start();
rthread.start();其实这两个是线程刚刚启动,会调用各种的run方法,然后不断地进行循环。直到输入Q为止。至于第二个问题:wthread.interrupt()操作是唤醒并运行wthread 线程还是先执行完rthread 线程后在运行?????这个和操作系统的中断机制有关,我也不清楚。