java中线程的几种状态和停止线程的方法

1.线程的状态图

QQ截图20181226161353

需要注意的是:线程调用start方法是使得线程到达就绪状态而不是运行状态

2.停止线程的两种方法

1)自然停止:线程体自然执行完毕

2)外部干涉:通过线程体标识

  1.线程类中定义线程体能够使用的标识

  2.线程体使用该标识

  3.提供对外的方法改变该标识

  4.外部根据条件调用该方法即可

ThreadStop.java:

1package 多线程; 2 3public class ThreadStop { 4 5 public static void main(String[] args) { 6 //真实角色 7 Study s = new Study(); 8 //匿名代理 9 new Thread(s).start(); 10 11 //外部干涉 12 for(int i=1;i<=100;i++) { 13 if(i==50) { 14 s.stop(); 15 } 16 System.out.println("main--->"+i); 17 } 18 } 19 20} 21 22class Study implements Runnable{ 23 24 //线程体类中定义线程体能够使用的标识 25 private boolean flag=true; 26 private int x=1; 27 @Override 28 public void run() { 29 // TODO Auto-generated method stub 30 //线程体改变该标识 31 while(flag) { 32 System.out.println("Study"+x+"秒"); 33 x++; 34 } 35 } 36 //对外提供方法改变标识 37 public void stop() { 38 this.flag=false; 39 } 40 41}

注意:代理类系统自动提供的stop方法不要使用,要用stop的话,自己在线程类里面写一个,因为代理类系统自动提供的stop已经过时,存在不安全性问题

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java并发之无同步方案

前置章节回顾:JAVA多线程并发容易引发的问题及如何保证线程安全(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzIxMjM4MDg2NA%3D%3D%26mid%3D2247484104%26idx%3D

java多线程之停止线程

在多线程开发中停止线程是很重要的技术点。停止线程在Java语言中并不像break语句那样干脆,需要一些技巧性的处理。一、 异常法采用异常法来停止一个线程,首先我们需要了解一下两个方法的用法:1、interrupt()方法publicclassMyTh

如何正确停止Java线程,终止Java线程的三种方法

如何正确停止Java线程,终止Java线程的三种方法在Java中有以下3种方法可以终止正在运行的线程:1.使用退出标志,使线程正常退出,也就是当run()方法完成后线程终止。2.使用stop()方法强行终止线程,但不推荐,该方法已被弃用,原因见后文。3.使用interrupt方法中断线程。以下内容翻译自J

Java线程的6种状态及切换(透彻讲解)

Java中线程的状态分为6种。1\.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2\.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的

JAVA并发之加锁导致的活跃性问题

首先提及一下前置知识:1.JAVA并发之基础概念(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.com%2Fs%2Fb8aX2DAICYQ05i1DI8SAmA)2.JAVA并发之进程VS线程(https://www.oschina.n