一个简单的守护线程示例
2016-03-28 16:28
316 查看
线程有两类:用户线程和守护线程。 用户线程是那些完成有用工作的线程。 守护线程 是那些仅提供辅助功能的线程。Thread 类提供了 setDaemon() 函数。Java 程序将运行到所有用户线程终止,然后它将破坏所有的守护线程。
import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.Scanner; /** * 守护线程<p> * 示例: * 主线程 负责 接收键盘输入 * 守护线程 负责 读写操作 * * 主线程结束时,守护线程是被强制结束。 * http://www.imooc.com/video/6310/0 */ public class DeamonThreadDemo { public static void main(String[] args) { System.out.println("进入主线程"+Thread.currentThread().getName()); DeamonThread deamon = new DeamonThread(); Thread thread = new Thread(deamon); thread.setDaemon(true); //设置成守护线程 thread.start(); System.out.println("主线程阻塞中..."); Scanner sc = new Scanner(System.in); sc.next(); sc.close(); System.out.println("结束主线程"+Thread.currentThread().getName()); } } class DeamonThread implements Runnable{ @Override public void run() { System.out.println("进入守护线程"+Thread.currentThread().getName()); try { writerToFile(); } catch (Exception e) { e.printStackTrace(); } System.out.println("结束守护程"+Thread.currentThread().getName()); } private void writerToFile() throws Exception{ File file = new File("D:"+File.separator+"测试.txt"); OutputStream os = new FileOutputStream(file,true); int count = 0; while(count < 99){ os.write(("\r\nworld"+count).getBytes()); System.out.println("向文件中写入:world"+count++); Thread.sleep(1000); } os.close(); } }
相关文章推荐
- java-模拟tomcat服务器
- C#多线程之Thread中Thread.IsAlive属性用法分析
- linux下mysql提示"mysql deamon failed to start"错误的解决方法
- Android开发笔记之:如何安全中止一个自定义线程Thread的方法
- java thread start()和run()方法简析
- Java中Runnable和Thread的区别分析
- Android开发笔记之:Handler Runnable与Thread的区别详解
- C#多线程之Thread中Thread.Join()函数用法分析
- Mysql Error Code : 1436 Thread stack overrun
- MySQL错误Forcing close of thread的两种解决方法
- c#线程Thread示例
- Android线程管理之ActivityThread
- Android 关于“NetworkOnMainThreadException”问题的原因分析及解决办法
- Java并发编程示例(七):守护线程的创建和运行
- Java线程之守护线程(Daemon)用法实例
- Java之Thread的join方法实例
- java中thread线程start和run的区别
- JAVA多线程Thread和Runnable的实现
- Java线程编程中Thread类的基础学习教程
- python开发之thread实现布朗运动的方法