从头认识多线程-1.9 迫使线程停止的方法-return法
这一章节我们来讨论一下还有一种停止线程的方法-return
1.在主线程上面return,是把全部在执行的线程都停掉
- package com.ray.deepintothread.ch01.topic_9;
- public class StopByReturn {
- public static void main(String[] args) throws InterruptedException {
- ThreadFive threadFive = new ThreadFive();
- Thread thread1 = new Thread(threadFive);
- thread1.start();
- Thread thread2 = new Thread(threadFive);
- thread2.start();
- Thread.sleep(200);
- return;
- }
- }
- class ThreadFive implements Runnable {
- @Override
- public void run() {
- System.out.println(Thread.currentThread().getName() + " begin");
- try {
- System.out.println(Thread.currentThread().getName() + " working");
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- System.out.println(Thread.currentThread().getName() + " exit");
- }
- }
- }
输出:
Thread-1 begin
Thread-1 working
Thread-0 begin
Thread-0 working
2.在当前线程return,仅仅是单纯的停止当前线程
- package com.ray.deepintothread.ch01.topic_9;
- public class StopByReturn2 {
- public static void main(String[] args) throws InterruptedException {
- ThreadOne threadOne = new ThreadOne();
- threadOne.start();
- Thread.sleep(200);
- threadOne.interrupt();
- }
- }
- class ThreadOne extends Thread {
- @Override
- public void run() {
- while (true) {
- if (this.isInterrupted()) {
- System.out.println("return");
- return;
- }
- }
- }
- }
输出:
return
- package com.ray.deepintothread.ch01.topic_9;
- import java.util.ArrayList;
- public class StopByReturn3 {
- public static void main(String[] args) throws InterruptedException {
- ThreadOne threadTwo = new ThreadOne();
- ArrayList<Thread> list = new ArrayList<>();
- for (int i = 0; i < 3; i++) {
- Thread thread = new Thread(threadTwo);
- thread.start();
- list.add(thread);
- }
- Thread.sleep(20);
- list.get(0).interrupt();
- }
- }
- class ThreadTwo implements Runnable {
- @Override
- public void run() {
- while (true) {
- if (Thread.currentThread().isInterrupted()) {
- System.out.println("Thread name:" + Thread.currentThread().getName() + " return");
- return;
- }
- }
- }
- }
输出:
Thread name:Thread-0 return
(然后其它线程一直在执行)
总结:这一章节我们讨论了一下return的两个方面,大家须要特别注意一点的就是return在main里面的运用。
从头认识多线程-1.9 迫使线程停止的方法-return法的更多相关文章
- 从头认识多线程-1.8 迫使线程停止的方法-暴力Stop方法
这一章节我们来讨论一下暴力Stop方法. 1.使用样例 package com.ray.deepintothread.ch01.topic_8; public class StopByStopMeth ...
- 零基础学习java------day18------properties集合,多线程(线程和进程,多线程的实现,线程中的方法,线程的声明周期,线程安全问题,wait/notify.notifyAll,死锁,线程池),
1.Properties集合 1.1 概述: Properties类表示了一个持久的属性集.Properties可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串 一个属性列表可包含另 ...
- Thread的中断机制(interrupt),循环线程停止的方法
一.中断原理 中断线程 线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个 ...
- Java多线程系列三——实现线程同步的方法
两种实现线程同步的方法 方法 特性 synchronized 不需要显式地加解锁,易实现 ReentrantLock 需要显式地加解锁,灵活性更好,性能更优秀,结合Condition可实现多种条件锁 ...
- Java线程停止interrupt()方法
程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的.难以发现的错误.在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程. 中 ...
- java多线线程停止正确方法
//军队线程 //模拟作战双方的行为 public class ArmyRunnable implements Runnable { //volatile保证了线程可以正确的读取其他线程写入的值 // ...
- 多线程---其他方法 停止线程、守护线程、join方法
第三方停止线程: 原来是stop(),因为该方法有些问题,所以被interrupt()方法取代,它的用途跟机制是 当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除,强制让线程恢复到 ...
- java多线程总结五:线程池的原理及实现
1.线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创 ...
- C#多线程实践——锁和线程安全
锁实现互斥的访问,用于确保在同一时刻只有一个线程可以进入特殊的代码片段,考虑下面的类: class ThreadUnsafe { static int val1, val2; static void ...
随机推荐
- 快速幂 cojs 1130. 取余运算
cojs 1130. 取余运算 ★ 输入文件:dmod.in 输出文件:dmod.out 简单对比时间限制:10 s 内存限制:128 MB [题目描述] 输入b,p,k的值,求b^p ...
- 内功心法 -- java.util.LinkedList<E> (7)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- <摘录>Gson对Java嵌套对象和JSON字符串之间的转换
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
- mac os颜色拾取工具/软件/器推荐
软件名:ColorSnappe 目前我用的时1.1.0版本 该工具可以利用alt+command+c快捷键拾取颜色,拾取后可以自动把颜色代码放入剪切板 .我最喜欢它可以生成ios开发的代码,比如选择了 ...
- Spring @PostConstruct和@PreDestroy实例
在Spring中,既可以实现InitializingBean和DisposableBean接口或在bean配置文件中指定 init-method 和 destroy-method 在初始化和销毁回调函 ...
- mysql item类
http://dev.mysql.com/doc/internals/en/item-class.html http://ourmysql.com/archives/1282
- Android BottomNavigationBar底部导航控制器的使用
最近Google在自己推出的Material design中增加了Bottom Navigation导航控制.Android一直没有官方的导航控制器,自己实现确实是五花八门,有了这个规定之后,就类似苹 ...
- TurboLinux11system»adjtimex简介
Adjtimex介绍 linux 系统有两个时钟:一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟.当操作系统关机的时候,用这个来记录时间,但是对于运行 ...
- 第十一章 PhpMyAdmin连接远程mysql服务器---连接openwrt 703N服务器
//千万不要在你原来的那个phpmyadmin文件夹上操作~~~要复制一个新的进行操作,这样我们就可以同时使用本地和远程 一.下载phpmyadmin到本地 我使用的是windows下的集成WAM ...
- error: <class 'xml.parsers.expat.ExpatError'>, syntax error: line 1, column 0: file: /usr/local/lib/python2.7/xmlrpclib.py line: 557
当linux设备上开启sonar6.2时, supervisorctl status报如下错误: error: <class 'xml.parsers.expat.ExpatError'> ...