白话JAVA守护线程
OneCoder(苦逼Coder)原创,转载请务必注明出处: http://www.coderli.com/archives/daemon-thread-plain-words/
关于“白话”:偶然想到的词,也许有一天能成为一个系列。目的就是用简洁,明快的语言来告诉您,我所知道的一切。
- Thread commonThread = new Thread("Common Thread");
这样就是用户线程。
- Thread daemonThread = new Thread("Daemon Thread");
- daemonThread.setDaemon(true);
这样就是守护线程。
起了“守护”线程这么动听的名字,自然要起到“守护”的作用。就好比男人要守护妹子。
- 两个妹子 - 互不想干,你挂你的,我挂我的
- /**
- * 测试两个用户线程的情况
- *
- * @author lihzh(OneCoder)
- * @date 2012-6-25 下午10:07:16
- */
- private static void twoCommonThread() {
- String girlOneName = "Girl One";
- Thread girlOne = new Thread(new MyRunner(3000, girlOneName), girlOneName);
- String girlTwoName = "Girl Two";
- Thread girlTwo = new Thread(new MyRunner(5000, girlTwoName), girlTwoName);
- girlOne.start();
- System.out.println(girlOneName + "is starting.");
- girlTwo.start();
- System.out.println(girlTwoName + "is starting");
- }
- private static class MyRunner implements Runnable {
- private long sleepPeriod;
- private String threadName;
- public MyRunner(long sleepPeriod, String threadName) {
- this.sleepPeriod = sleepPeriod;
- this.threadName = threadName;
- }
- @Override
- public void run() {
- try {
- Thread.sleep(sleepPeriod);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println(threadName + " has finished.");
- }
- }
开始都活着。
3秒后,妹子1挂了,妹子2活的好好的,她的寿命是5秒。
- 一妹子一王子
- /**
- * 测试一个用户一个守护线程
- *
- * @author lihzh(OneCoder)
- * @date 2012-6-25 下午10:22:58
- */
- private static void oneCommonOneDaemonThread() {
- String girlName = "Girl";
- Thread girl = new Thread(new MyRunner(3000, girlName), girlName);
- String princeName = "Prince";
- Thread prince = new Thread(new MyRunner(5000, princeName), princeName);
- girl.start();
- System.out.println(girlName + "is starting.");
- prince.setDaemon(true);
- prince.start();
- System.out.println(prince + "is starting");
- }
开始快乐的生活着,妹子能活3秒,王子本来能活5秒。
但是3秒后,妹子挂了,王子也殉情了。
你可能会问,如果王子活3秒,妹子能活5秒呢。我只能说,虽然你是王子,该挂也得挂,妹子还会找到其他高富帅的,懂?
看,王子已经挂了。
- 两个王子
- /**
- * 测试两个守护线程
- *
- * @author lihzh(OneCoder)
- * @date 2012-6-25 下午10:29:18
- */
- private static void twoDaemonThread() {
- String princeOneName = "Prince One";
- Thread princeOne = new Thread(new MyRunner(5000, princeOneName), princeOneName);
- String princeTwoName = "Prince Two";
- Thread princeTwo = new Thread(new MyRunner(3000, princeTwoName), princeTwoName);
- princeOne.setDaemon(true);
- princeOne.start();
- System.out.println(princeOneName + "is starting.");
- princeTwo.setDaemon(true);
- princeTwo.start();
- System.out.println(princeTwoName + "is starting");
- }
白话JAVA守护线程的更多相关文章
- Java守护线程
最近的项目使用的是dubbo.Web工程发布在Tomcat上,会作为消费者调用其他的dubbo微服务.但是最近发现一个问题,在使用shutdown命令关闭tomcat的时候,Tomcat并没有真正关闭 ...
- 转:JAVA守护线程
原文地址:https://www.cnblogs.com/wxgblogs/p/5417503.html 详细内容看原文~ ,写的挺好的 在Java中有两类线程:User Thread(用户线程). ...
- Java 守护线程概述
原文出处: 朱小厮 Java的线程分为两种:User Thread(用户线程).DaemonThread(守护线程). 只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最 ...
- JAVA - 守护线程(Daemon Thread)
转载自:http://www.cnblogs.com/luochengor/archive/2011/08/11/2134818.html 在Java中有两类线程:用户线程 (User Thread) ...
- java守护线程。
java的守护线程:具体定义我也不太清楚,百度和谷歌了看的也不是很明白,但是啊,下边有给出一个例子自己领悟吧. 一.计时器的Timer声明时是否声明为守护线程对计时器的影响. /** * */ pac ...
- java 守护线程整理
java中finally语句不走的可能存在system.exit(0)与守护线程 线程sleep采用TimeUnit类 设定线程的名字thread.getcurrentThread().setName ...
- Java 守护线程(Daemon) 例子
当我们在Java中创建一个线程,缺省状态下它是一个User线程,如果该线程运行,JVM不会终结该程序.当一个线被标记为守护线程,JVM不会等待其结束,只要所有用户(User)线程都结束,JVM将终结程 ...
- 从 JVM 视角看看 Java 守护线程
Java 多线程系列第 7 篇. 这篇我们来讲讲线程的另一个特性:守护线程 or 用户线程? 我们先来看看 Thread.setDaemon() 方法的注释,如下所示. Marks this thre ...
- java守护线程的理解
package daemonThread; /*setDaemon(true)方法将线程设置为守护线程,线程的Daemon默认值为false * 只要当前JVM实例中存在任何一个非守护线程没有结束,守 ...
随机推荐
- SQL Server 2008 忘记sa密码的解决办法
由于某些原因,sa和windows验证都不能登录 sql server,可以用独占模式,修改sa密码先在服务管理器停止Sql Server服务,然后打开命令行,进入 SQL Server安装目录,进入 ...
- Android app去应用市场评分功能
因为android市场很多,去各个应用市场评分的功能却不是很难实现. private void gotoRate(){ Uri uri = Uri.parse("market://detai ...
- Log4j学习手记
注:今天难得清闲,学了下log4j,参考博文 http://www.cnblogs.com/pony/archive/2008/08/25/1275484.html ,文字部分基本上来自该博文,我只是 ...
- ANCS协议翻译
综述 苹果通知中心(Apple Notification Center Service, ANCS)的目的是提供给蓝牙外设一种简单.方便的获取ios设备通知信息的方式. 依赖 ANCS的使用没有依赖, ...
- 常用几个UITableView,UICollectionView UIScrollView关键点
UITableView UITableView 在Ios中大量使用,我们对UITableview中的有关知识进行整理 UITAbleView是表视图控制器 1 UITableView ...
- 安装TDM-GCC
TDM-GCC是一组免费的编译器套件,有32位和64位两种版本.其中64位版既可以编译生成64位的可执行文件,又可以编译生成32位的可执行文件.从TDM-GCC的官网可以下载到相应的安装包,安装完成后 ...
- node.js入门(三)调式
1.安装调式工具 打开命令行工具,输入以下内容,然后回车. npm install -g node-inspector 等待安装成功呢后,我们就可以使用 node-debug 文件名 这个命令来调式我 ...
- CDZSC_2015寒假新人(1)——基础 e
Description Julius Caesar lived in a time of danger and intrigue. The hardest situation Caesar ever ...
- Mysql优化之创建高性能索引(二)
1.索引的优点 索引可以让服务器快速地定位到表的指定位置.总结下来有三大优点: 索引大大减少了服务器需要扫描的数据量 索引可以帮助服务器避免排序和临时表 索引可以将随机I/O变为顺序I/O 2.高性能 ...
- 使用pymysql连接MySql数据库
MySQLdb安装失败了,直接使用pymysql,安装了pymysql. 并学习了使用使用pymysql创建数据库和表,并插入数据. __author__ = 'Administrator' impo ...