多线程-守护线程-setDaemon


- 1 package multithread4;
- 2 /*
- 3 * 停止线程:
- 4 * 1,stop方法。
- 5 *
- 6 * 2,run方法结束。
- 7 *
- 8 * 怎么控制线程的任务结束呢?
- 9 * 任务中都会有循环结构,只要控制住循环就可以结束任务,线程就结束
- 10 *
- 11 * 控制循环通常就用定义标记来完成。
- 12 *
- 13 * 但是如果线程处于冻结状态,无法读取标记。如何结束呢?
- 14 *
- 15 * 可以使用interrupt()方法将线程从冻结状态强制恢复到运行状态中来,让线程具备cpu执行资格
- 16 * 但是强制动作会发生InterruptedException,记得要处理
- 17 */
- 18
- 19
- 20
- 21 class StopThread implements Runnable{
- 22 private boolean flag = true;
- 23 public synchronized void run() {
- 24 while(flag) {
- 25 try {
- 26 wait();//t0 t1进来都等待了读取不了标记,结束不了任务
- 27 } catch (InterruptedException e) {
- 28 System.out.println(Thread.currentThread().getName()+"......."+e);
- 29 flag = false;
- 30 }
- 31 System.out.println(Thread.currentThread().getName()+".....");
- 32 }
- 33 }
- 34 public void setFlag() {
- 35 flag = false;
- 36 }
- 37 }
- 38 public class DaemonThreadDemo {
- 39
- 40 public static void main(String[] args) {
- 41 // TODO Auto-generated method stub
- 42 StopThread st = new StopThread();
- 43
- 44 Thread t1 = new Thread(st);
- 45 Thread t2 = new Thread(st);
- 46
- 47 t1.start();
- 48 t2.setDaemon(true);//开启线程2前守护线程, 可以理解为后台线程
- 49 //如果所有前台线程都结束,后台线程无论处于什么状态都自动结束。
- 50 //即当正在运行的线程都是守护线程(系统级线程或者用户线程)时,java虚拟机自动退出
- 51 t2.start();
- 52
- 53 int num = 1;
- 54 for (; ; ) {
- 55 if (++num == 50) {
- 56 // st.setFlag();
- 57 t1.interrupt();
- 58 // t2.interrupt();
- 59 break;
- 60 }
- 61 System.out.println("main...."+num);
- 62 }
- 63 System.out.println("over");
- 64 }
- 65
- 66 }
DaemonThreadDemo
多线程-守护线程-setDaemon的更多相关文章
- python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon)
python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon) 前言 今天小编YOYO请xiaoming和xiaowang吃火锅,吃完火锅的时候会有以下三种场景: - ...
- java线程 - 多线程 - 守护线程
1.多线程执行者/处理类 都是Runnable的实现类(如自定义类实现Runnable 或 java原生的Thread.FutureTask),但最后都必须封装成Thread线程类由Thread.st ...
- Python多线程-守护线程
守护线程:守护着非守护线程,守护线程和非守护线程同时运行,当非守护线程运行结束后,无论守护线程有没有运行完,脚本都会停止运行 首先看一段普通的多线程实例 # -*- coding:utf-8 -*- ...
- python 并发编程 多线程 守护线程
做完工作这个进程就应该被销毁 单线程情况: 一个进程 ,默认有一个主线程 ,这个主线程执行完代码后 ,就应该自动销毁.然后进程也销毁. 多线程情况: 主线程代表进程结束 一个进程可以开多个线程,默认开 ...
- 并发编程~~~多线程~~~守护线程, 互斥锁, 死锁现象与递归锁, 信号量 (Semaphore), GIL全局解释器锁
一 守护线程 from threading import Thread import time def foo(): print(123) time.sleep(1) print('end123') ...
- 多线程、死锁、线程安全、同步方法、代码块、休眠、守护线程、Thread、Runnable(二十三)
1.多线程的引入 * 1.什么是线程 * 线程是程序执行的一条路径, 一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率, 可以同时完成多项工作* 2.多线程的应用场景 * 红蜘蛛同时共 ...
- java多线程与线程间通信
转自(http://blog.csdn.net/jerrying0203/article/details/45563947) 本文学习并总结java多线程与线程间通信的原理和方法,内容涉及java线程 ...
- java笔记--守护线程的应用
守护线程的应用 Java中的线程可以分为两类,即用户线程和守护线程.用户线程是为了完成任务,而守护线程是为其他线程服务 --如果朋友您想转载本文章请注明转载地址"http://www.cnb ...
- join和 Daemon守护线程
一.前言 一个程序至少有一个主线程,主线程启动子线程后,它们之间并没有隶属关系.主线程和子线程执行是并行的,相互独立.主线程执行完毕后默认不等子线程执行结束就接着往下走了,如果有其他程序就会运行另外的 ...
随机推荐
- NULL在oracle和mysql索引上的区别
一.问题 oracle的btree索引不存储NULL值,所以用is null或is not null都不会用到索引范围扫描,但是在mysql中也是这样吗? 二.实验 先看看NULL在oracle(11 ...
- 【LeetCode】266. Palindrome Permutation 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...
- Codeforces 1076G Array Game 题解
目录 题目大意 做法 代码 不想写昨天晚上cf的比赛题目所以来写题解摸摸鱼 题目大意 有一个在长度为\(k\)的正整数序列\(b\)上进行的游戏,一开始一个棋子放在位置\(1\),假如当前棋子的位置为 ...
- 第十九个知识点:Shamir密钥交换场景
第十九个知识点:Shamir密钥交换场景 Shamir密钥交换场景是一个被Adi Shamir提出的算法.算法允许多方分割一个密码,例如一个密钥.当足够多的秘密结合起来,整个密钥就被计算出来了. 正式 ...
- CS229 机器学习课程复习材料-线性代数
本文是斯坦福大学CS 229机器学习课程的基础材料,原始文件下载 原文作者:Zico Kolter,修改:Chuong Do, Tengyu Ma 翻译:黄海广 备注:请关注github的更新,线性代 ...
- CS5213替代AG6200 AG6201|HDMI转VGA带音频输出方案芯片
台湾安格AG6200 AG6201专门用于设计HDMI转VGA带音频输出的方案芯片,CS5213是一款HDMI to VGA转换器且结合了HDMI输入接口和模拟RGB DAC输出.带支持片上音频数模转 ...
- 云南农职《JavaScript交互式网页设计》 综合机试试卷④——蔚蓝网导航栏
一.语言和环境 实现语言:javascript.html.css. 开发环境:HBuilder. 二.题目(100分) 1.功能需求: 布局出顶部导航栏目 鼠标放到新手入门显示对象的下拉列表 鼠标移开 ...
- C#中的值传递与引用传递(in、out、ref)
在C#中,方法.构造函数可以拥有参数,当调用方法或者构造函数时,需要提供参数,而参数的传递方式有两种(以方法为例): 值传递 值类型对象传递给方法时,传递的是值类型对象的副本而不是值类型对象本身.常用 ...
- MySQL支持IPv6
开启和验证MySQL支持IPv6的方法, 此处使用的MySQL版本为mysql-5.5.35-linux2.6-x86_64. 1.验证操作系统支持IPv6,此处是Linux操作系统 ping6 :: ...
- centos6.5搭建LAMP
实验前准备 (1)service iptables stop #关闭防火墙 service iptables status #查看防火墙是否已经关闭 iptabl ...