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

一.

线程既然开启了,运行了,冻结又恢复运行了,那什么时候消亡呢? 怎么来停止线程呢?不能一直在运行。

线程怎么停,线程自己最清楚。在Thread类中,提供了stop方法,

本来线程持有一个锁,只要stop,它就什么都在放,这是强制操作,无论出于什么状态,强制将其搞定。本来wait,这那儿的,stop一下子就没了。

stop方法做的不是状态切换了,而是消失。

线程停止,其实只有一种,就是run方法结束。

线程一旦没有自己运行的代码了,任务没有了,线程自动就结束了。可是线程的任务怎么能没有呢?

标记就是条件,条件的书写是多种多样的,怎么写都可以。

以前写的while(ture)是死循环,不用想停的事儿了,除非你加上if,break。

现在将true改成flag,就是条件标记,可以是ture-false,或是比较大小值。同时还要向外提供一个能够改变标记的方式,

DOS结果显示正常,而且结束了。如果没有st.setFlag(),那么上面两个线程就结束不了。

当我们有了标记以后,一旦步入循环了,这个程序就能停的下来。

这种定义标记的方式,我们很常用。但是用起来,还有些解决不了的问题。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

一. 除了interrupt方法,还有其他方法, 我们要介绍线程类中常见的一些方法,比如说setDaemon, 还是结合之前的例子来讲解,t1和t2两个线程,我们中断了一个,另一个没有中断,那么DOS结果就结束不了. 可是如果在开启t2之前,将其设置成守护线程的话,守护听不懂,可以将它认为是后台线程.以前认识的线程都是前台线程, DOS结果显示为结束了. 两者有什么区别呢?后台线程的特点在于,它和前台线程都正常进行开启,就是结束不一样,运行都一样,互相抢夺cpu的执行权,结束的时候,前台线程必须

Python进阶(三十四)-Python3多线程解读

Python进阶(三十四)-Python3多线程解读 线程讲解 ??多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度. 程序的运行速度可能加快. 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. ??线程在执行过程中与进程还是有区别的.每个独立

“全栈2019”Java多线程第四十二章:获取线程与读写锁的保持数

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四十二章:获取线程与读写锁的保持数 下一章 "全栈2019"Java多线程第四十三章:查询是否有线程在等待读写锁 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复&quo