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

Wesley13
• 阅读 807

1.线程的状态图

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

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

2.停止线程的两种方法

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

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

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

  2.线程体使用该标识

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

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

ThreadStop.java:

package 多线程;

public class ThreadStop {

    public static void main(String[] args) {
        //真实角色
        Study s = new Study();
        //匿名代理
        new Thread(s).start();
        
        //外部干涉
        for(int i=1;i<=100;i++) {
            if(i==50) {
                s.stop();
            }
            System.out.println("main--->"+i);
        }
    }

}

class Study implements Runnable{

    //线程体类中定义线程体能够使用的标识
    private boolean flag=true;
    private int x=1;
    @Override
    public void run() {
        // TODO Auto-generated method stub
        //线程体改变该标识
        while(flag) {
            System.out.println("Study"+x+"秒");
            x++;
        }
    }
    //对外提供方法改变标识
    public void stop() {
        this.flag=false;
    }
    
}

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

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
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
Wesley13 Wesley13
3年前
java多线程之停止线程
在多线程开发中停止线程是很重要的技术点。停止线程在Java语言中并不像break语句那样干脆,需要一些技巧性的处理。一、 异常法采用异常法来停止一个线程,首先我们需要了解一下两个方法的用法:1、interrupt()方法publicclassMyTh
御弟哥哥 御弟哥哥
3年前
如何正确停止Java线程,终止Java线程的三种方法
如何正确停止Java线程,终止Java线程的三种方法在Java中有以下3种方法可以终止正在运行的线程:1.使用退出标志,使线程正常退出,也就是当run()方法完成后线程终止。2.使用stop()方法强行终止线程,但不推荐,该方法已被弃用,原因见后文。3.使用interrupt方法中断线程。以下内容翻译自J
Wesley13 Wesley13
3年前
Java线程的6种状态及切换(透彻讲解)
Java中线程的状态分为6种。1\.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2\.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的
Wesley13 Wesley13
3年前
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
Wesley13 Wesley13
3年前
4、jstack查看线程栈信息
1、介绍利用jps、top、jstack命令找到进程中耗时最大的线程,以及线程状态等等,同时最后还可以显示出死锁的线程查找:FoundoneJavaleveldeadlock即可1、jps获得进程号!(https://oscimg.oschina.net/oscnet/da00a309fa6
Wesley13 Wesley13
3年前
2019秋招复习笔记
第一模块并发与多线程Java多线程方法:实现Runnable接口,继承thread类,使用线程池操作系统层面的进程与线程(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fb
Wesley13 Wesley13
3年前
Java 并发编程 71 道面试题及答案
!(https://oscimg.oschina.net/oscnet/0dd1ba306d5f44dd9bae9808c786e662.jpg)作者:乌枭 来源:https://blog.csdn.net/qq\_34039315/article/details/785493111、在java中守护线程和本地线程
Wesley13 Wesley13
3年前
Java 实现线程的方式有几种方式?带有返回值的线程怎么实现?
Java实现线程的方式有几种方式?带有返回值的线程怎么实现?在Java线程开发中,有几种方法开启线程?假如需要得到线程返回的信息怎么办?可以实现吗?凯哥将通过源码和大家一起分享下线程怎么将返回值带回来的。一:无返回值类型的1:继承Thread类2:实现Runnable接口这两种是大家常用的,代码demo就截图吧。