JAVA-初步认识-第十四章-多线程(守护线setDaemon)

一.

除了interrupt方法,还有其他方法,

我们要介绍线程类中常见的一些方法,比如说setDaemon,

还是结合之前的例子来讲解,t1和t2两个线程,我们中断了一个,另一个没有中断,那么DOS结果就结束不了。

可是如果在开启t2之前,将其设置成守护线程的话,守护听不懂,可以将它认为是后台线程。以前认识的线程都是前台线程,

DOS结果显示为结束了。

两者有什么区别呢?后台线程的特点在于,它和前台线程都正常进行开启,就是结束不一样,运行都一样,互相抢夺cpu的执行权,结束的时候,前台线程必须要进行手动结束,比如说设定标记的形式将其结束掉,你不结束它就会一直在这等待,在这耗费资源,在等待cpu对其进行处理。而对于后台线程叫做,如果所有的前台线程都结束了,后台线程无论处于什么状态,都自动结束,后台好像对前台有一种依附关系,你在我也在,你运行我也运行,你消失我也消失。前台线程就不是了,这个消失了,这个还在。

这有用吗?简单举个例子。你负责输入,我负责输出,你不输入,我就不输出,你都完事儿了,我还有必要存在吗?我可以设置成后台的。

后台线程就说到这。如果想要线程做一个最基本的依附动作,它什么时候结束根据其他线程而定的话,就可以把他定义为后台的,

时间: 2024-07-31 09:42:34

JAVA-初步认识-第十四章-多线程(守护线setDaemon)的相关文章

java 面向对象编程--第十四章 多线程编程

1.  多任务处理有两种类型:基于进程和基于线程. 2.  进程是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存. 3.  线程是进程内部单一的顺序控制流.一个进程拥有多个线程.多个线程共享一个进程的内存空间. 4.  基于进程的特点是允许计算机同时运行两个或更多的程序. 5.  基于线程的多任务处理环境中,线程是最小的处理单位. 6.  基于进程所需的开销更少:每个进程都需要操作系统为其分配独立的内存空间:同意进程中的所有线程都在同意内存

201671010107 2016-2017-2 《Java程序设计》第十四章学习心得

通过这一章的学习,我知道了程序,进程和线程之间的关系,知道了Java实现多线程的两种途径:1.创建Thread类的子类:2.在程序中定义实现Runnable接口的类.线程的中断,线程的六种状态,多线程调度,守护线程,线程的同步等.

No_16_0325 Java基础学习第二十四天—多线程学习总结

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.03.25 lutianfei none 第十章 多线程 多线程概述 什么是进程? 进程:就是正在运行的程序. 进程是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程有什么意义呢? 可以在一个时间段内执行多个任务. 可以提高CPU的使用率. 什么是线程呢? 在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程. 线程:是程序的执行单元,执行路径.是程序使用CPU的最

JAVA基础之(十四)--“多线程”

菜鸟里写的暂时够用了,菜鸟 不充点: 如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口.这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类[java的api建议] 菜鸟中只有前半部分,线程同步,死锁等需要看书:重在理解概念和应用: 原文地址:https://www.cnblogs.com/silence-fire/p/9756442.html

JAVA-初步认识-第十四章-多线程-停止线程方式-定义标记

一. 线程既然开启了,运行了,冻结又恢复运行了,那什么时候消亡呢? 怎么来停止线程呢?不能一直在运行. 线程怎么停,线程自己最清楚.在Thread类中,提供了stop方法, 本来线程持有一个锁,只要stop,它就什么都在放,这是强制操作,无论出于什么状态,强制将其搞定.本来wait,这那儿的,stop一下子就没了. stop方法做的不是状态切换了,而是消失. 线程停止,其实只有一种,就是run方法结束. 线程一旦没有自己运行的代码了,任务没有了,线程自动就结束了.可是线程的任务怎么能没有呢? 标

JAVA-初步认识-第十四章-多线程-wait和sleep的区别

一. wait和sleep的方法有些类似,我们现在要对其进行描述,区分它们. wait方法在object类中,而且有两种形式,分别是wait()和wait(long timeout),我们关注后者. 参数的截图中表明wait方法可以醒. 等待和睡眠的区别,睡眠是可以醒过来的,但是等待有可能是无休止的. 两者一个是object方法,一个是thread方法. sleep能不醒,不需要被人叫.sleep拿着锁,别人进不来. 现在讲述一些有趣的,可能颠覆以往的概念. 这两个是同一个锁,t0,t1,t2三

JAVA-初步认识-第十四章-多线程-停止线程方式-interrupt

一. 结合上一节继续讲述,不要以为设置了标记线程就能停止,依旧有停不下来的情况. 整个函数就是添加了wait()方法,导致try-catch的加入. DOS结果显示,程序没有停下来,和主线程结束了.其余两个线程都没结束,都处于等待状态. 这两个线程拿到锁进来后,都wait停在这了. 设置标记也没用,因为这两个线程就没读到标记. 有人说采用notify方法,但是notify要在同一个锁中,在这个程序中放不了. 如果程序中不用wait,用sleep呢?而且sleep时间比较长,比如说一个小时,没有一

Java(第十四章)

第十四章 1.Java中的包(package) 2.1 包,对应到磁盘中的文件夹 2.2 新建一个class,默认保存在缺省包中 2.3 声明包的关键字:package package语句,置顶位置 2.4 导入包的关键字:import import 包名.类名(*表示所有); 2.5 作用: 分类存放,解决同名冲突.方便查找和管理 2.6 命名规范 l  Java包名通常由小写字母组成,不能以圆点开头或结尾. l  一个唯一包名的前缀通常是全部小写的ASCII字母,并且是一个顶级域名com.e

JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制

JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是class对象 我们在上节验证了同步函数的锁是this,但是对于静态同步函数,你又知道多少呢? 我们做一个这样的小实验,我们给show方法加上static关键字去修饰 private static synchronized void show() { if (tick > 0) { try { Thread