java_线程状态_终止

目录

线程停止两种情况

1、自身正常停止

2、外部干涉

2.1 外部干涉结构体

运行结果


线程停止两种情况

 

1、自身正常停止

自然调用完成,结束线程;

2、外部干涉

停止不能自身正常停止的线程:比如死循环。方法:提供boolean类型的终止变量,外部干涉。

2.1 外部干涉结构体及理解代码

 

  1. 加入标识:线程类中 定义 线程体使用的标识;
  2. 关联标识:线程体使用该标识;
  3. 提供方法:对外提供方法改变标识。
package com.pt.thread;

import java.util.jar.Attributes.Name;

/**
 * 中止线程
 * 1)	加入标识:线程类中 定义 线程体使用的标识;
 * 2)	关联标识:线程体使用该标识;
 * 3)	提供方法:对外提供方法改变标识。
 * @author tyler
 *
 */
public class TerminateThread implements Runnable {
	// 1、加入标识
	private boolean flag = true;
	private String name;
	 
	public TerminateThread(String name) {
		super();
		this.name = name;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		// 实现多线程:实现Runnable接口,重写run函数
		
		// 2、关联标识
		int i = 0;
		while (flag) {
			System.out.println("这是TerminateThread类对象" + this.name + "的线程体内容" + "--->" + i++ + "");
		}
	}
	
	// 3、对外提供方法:改变标识
	public void terminateFlag() {
		this.flag = false;
	}
	
	public static void main(String[] args) {
		// 主函数
		// 启动线程:1、目标对象;2、调用THread类start函数
		TerminateThread targetObject = new TerminateThread("1号");
		new Thread(targetObject).start();
		
		// 主线程代码
		for (int i = 0; i < 99; i++) {
			// 外部控制线程终止
			if (i == 88) {
				targetObject.terminateFlag();
				System.out.println(targetObject.name + "game over");
			}
			// 主线程内容
			System.out.println("主线程内容-->" + i);
		}
	}
	
}

运行结果

主线程内容-->0
这是TerminateThread类对象1号的线程体内容--->0
主线程内容-->1
这是TerminateThread类对象1号的线程体内容--->1
这是TerminateThread类对象1号的线程体内容--->2
这是TerminateThread类对象1号的线程体内容--->3
这是TerminateThread类对象1号的线程体内容--->4
这是TerminateThread类对象1号的线程体内容--->5
这是TerminateThread类对象1号的线程体内容--->6
主线程内容-->2
主线程内容-->3
主线程内容-->4
主线程内容-->5
主线程内容-->6
主线程内容-->7
主线程内容-->8
主线程内容-->9
主线程内容-->10
主线程内容-->11
这是TerminateThread类对象1号的线程体内容--->7
主线程内容-->12
主线程内容-->13
主线程内容-->14
这是TerminateThread类对象1号的线程体内容--->8
主线程内容-->15
主线程内容-->16
主线程内容-->17
主线程内容-->18
主线程内容-->19
主线程内容-->20
主线程内容-->21
主线程内容-->22
主线程内容-->23
主线程内容-->24
主线程内容-->25
主线程内容-->26
主线程内容-->27
主线程内容-->28
主线程内容-->29
主线程内容-->30
主线程内容-->31
主线程内容-->32
主线程内容-->33
主线程内容-->34
主线程内容-->35
主线程内容-->36
主线程内容-->37
主线程内容-->38
主线程内容-->39
主线程内容-->40
这是TerminateThread类对象1号的线程体内容--->9
这是TerminateThread类对象1号的线程体内容--->10
主线程内容-->41
这是TerminateThread类对象1号的线程体内容--->11
这是TerminateThread类对象1号的线程体内容--->12
这是TerminateThread类对象1号的线程体内容--->13
这是TerminateThread类对象1号的线程体内容--->14
这是TerminateThread类对象1号的线程体内容--->15
这是TerminateThread类对象1号的线程体内容--->16
这是TerminateThread类对象1号的线程体内容--->17
这是TerminateThread类对象1号的线程体内容--->18
这是TerminateThread类对象1号的线程体内容--->19
这是TerminateThread类对象1号的线程体内容--->20
主线程内容-->42
主线程内容-->43
主线程内容-->44
主线程内容-->45
主线程内容-->46
主线程内容-->47
主线程内容-->48
主线程内容-->49
主线程内容-->50
主线程内容-->51
主线程内容-->52
主线程内容-->53
主线程内容-->54
主线程内容-->55
主线程内容-->56
主线程内容-->57
主线程内容-->58
主线程内容-->59
主线程内容-->60
主线程内容-->61
主线程内容-->62
主线程内容-->63
主线程内容-->64
主线程内容-->65
主线程内容-->66
主线程内容-->67
主线程内容-->68
主线程内容-->69
主线程内容-->70
主线程内容-->71
主线程内容-->72
主线程内容-->73
主线程内容-->74
主线程内容-->75
主线程内容-->76
主线程内容-->77
主线程内容-->78
主线程内容-->79
主线程内容-->80
主线程内容-->81
主线程内容-->82
主线程内容-->83
主线程内容-->84
主线程内容-->85
主线程内容-->86
主线程内容-->87
1号game over
主线程内容-->88
主线程内容-->89
这是TerminateThread类对象1号的线程体内容--->21
主线程内容-->90
主线程内容-->91
主线程内容-->92
主线程内容-->93
主线程内容-->94
主线程内容-->95
主线程内容-->96
主线程内容-->97
主线程内容-->98

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值