线程分守护线程和用户线程
class DaemonThread implements Runnable {
@Override
public void run() {
System.out.println("进入了守护线程" + Thread.currentThread().getName());
try {
writeToFile();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("退出守护线程");
}
private void writeToFile() throws IOException, InterruptedException {
File file = new File("D:" + File.separator + "daemon.txt");
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file, true);
Integer count = 0;
while (count < 999) {
outputStream.write(("\r\nword" + count).getBytes());
System.out.println("守护线程" + Thread.currentThread().getName()
+ "向文件中写入word" + count++);
Thread.sleep(1000);
}
} finally {
if (outputStream != null) {
outputStream.close();
}
}
}
}
public class MyDaemonTest {
public static void main(String[] args) {
System.out.println("开始执行主线程");
DaemonThread daemonThread = new DaemonThread();
Thread thread=new Thread(daemonThread);
thread.setDaemon(true);
thread.start();
Scanner scanner=new Scanner(System.in);
scanner.next();
System.out.println("结束执行主线程");
}
}
执行main方法,启动了主函数和守护线程,然后阻塞等待控制条输入,在控制台中输入任意的数据即可停止阻塞状态。
执行情况: