java 多线程-线程的终止

终止线程的两种方式:
线程正常执行完毕
外部干涉加入标识(在为真的情况下才执行线程)
不要使用stop和destroy方法

public class hh implements Runnable {
 //加入标识,标记线程体是否可以运行

private boolean flag=true;
private String name;
public hh(String name)
{
    this.name=name;
}
public void run()
{
    int i=0;
    //关联标识,true-->运行,false-->停止
    while(flag)
    {
        System.out.println(name+"-->"+i++);
    }
}
//对外提供方法改变标识
public void stopFlag()
{
    this.flag=false;
}
public static void main(String[]args)
{
    hh h=new hh("me");
    new Thread(h).start();

    for(int i=0;i<=10;i++)
    {
        if(i==9)
        {
            h.stopFlag();//线程的终止
            System.out.println("over");
        }
        System.out.println("it"+i);
    }

}

}

原文地址:https://blog.51cto.com/14437184/2427744

时间: 2024-11-03 22:48:30

java 多线程-线程的终止的相关文章

Java多线程——线程之间的同步

Java多线程——线程之间的同步 摘要:本文主要学习多线程之间是如何同步的,以及如何使用synchronized关键字和volatile关键字. 部分内容来自以下博客: https://www.cnblogs.com/hapjin/p/5492880.html https://www.cnblogs.com/paddix/p/5367116.html https://www.cnblogs.com/paddix/p/5428507.html https://www.cnblogs.com/liu

java 多线程—— 线程让步

java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 java 多线程—— 线程等待与唤醒 java 多线程—— 线程让步 概述 第1 部分 yield()介绍 第2 部分 yield()示例 第3 部分 yield() 与 wait()的比较 第1 部分 yield()介绍 yield()的作用是让步.它能让当前线程由“运行状态”进入到“就绪状态”

java 多线程—— 线程等待与唤醒

java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 java 多线程—— 线程等待与唤醒 概述 第1部分 wait(), notify(), notifyAll()等方法介绍 第2部分 wait()和notify()示例 第3部分 wait(long timeout)和notify() 第4部分 wait() 和 notifyAll() 第5部分 

java多线程编程--如何终止一个线程

1. Thread.stop()函数 stop()函数终止线程就像是强行拔掉电源线关机一样,可能会带来未知风险,因此目前不再推荐使用这种方式.请忘记它吧~~ 2. 改变标志变量状态 通常我们会在线程中使用一个标志变量来控制线程的运行,如: public class TestCallable implements Runnable { private boolean running = true; public void stop() { this.running = false; } publi

Java多线程——线程的生命周期和状态控制

一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable). 注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadStateException异常. 2.就绪状态 处于就绪状态的线程已经具备了运行条件,但还没有分配到CPU,处于线程就绪队列(尽管是采用队列形式,事实上,把它

Java多线程——线程阻塞工具类LockSupport

简述 LockSupport 是一个非常方便实用的线程阻塞工具,它可以在线程内任意位置让线程阻塞. 和 Thread.suspend()相比,它弥补了由于 resume()在前发生,导致线程无法继续执行的情况. 和 Object.wait()相比,它不需要先获得某个对象的锁,也不会抛出 InterruptedException 异常. LockSupport 的静态方法 park()可以阻塞当前线程,类似的还有 parkNanos().parkUntil()等方法.它们实现了一个限时等待,如下图

Java多线程-线程控制

 休眠线程: public static void sleep(long millis) throws InterruptedException在指定的毫秒数内让当前正在执行的线程休眠(暂停执行).该线程不丢失任何监视器的所属权. 线程加入 public final void join() throws InterruptedException等待该线程终止. 抛出:InterruptedException - 如果另一个线程中断了当前线程.当抛出该异常时,当前线程的中断状态 被清除.  线程礼

JAVA多线程--线程的同步安全

每当我们在项目中使用多线程的时候,我们就不得不考虑线程的安全问题,而与线程安全直接挂钩的就是线程的同步问题.而在java的多线程中,用来保证多线程的同步安全性的主要有三种方法:同步代码块,同步方法和同步锁.下面就一起来看: 一.引言 最经典的线程问题:去银行存钱和取钱的问题,现在又甲乙两个人去同一个账户中取款,每人取出800,但是账户中一共有1000元,从逻辑上来讲,如果甲取走800,那么乙一定取不出来800: 1 package thread.threadInBank; 2 3 /** 4 *

java 多线程—线程怎么来的

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器. 并发并非一定得用多线程,多进程也可以,不过java里面谈论并发,大多数与线程脱不开关系. 1.线程的实现 线程是比进程更轻量级的调度执行单位,在linux里面,线程和进程没有什么区别,唯一的就是在地址空间,线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的. 目前主流的操作系统都提供的线程实现,java则提供的线程实现方法都是native的,因为不同的硬件和操作系