java 线程停止的方法

线程停止的方法:

记住一点,线程的停止,

1.自己运行完了,

2.如果是无限循环,在外部,只能用flag标记来操作。

但是当线程处于冻结状态(阻塞),sleep,wait,join,(这三个方法抛出异常。)

就不会读取到flag.

这个时候,我们要清除线程的冻结状态,让它回到运行中。

如果,线程没有使之冻结的语句,则,inierrupt()不进行任何操作。

interrupt()方法,会使sleep,wait,jion方法抛出异常。

然后,我们在处理异常的语句中来操作。

我推荐的方式:不在catch中改变标记,

还是调用改变标记的方法,然后,跟上interrupt.

st.changeFlag();

t1.interrupt();

这样,无论线程中,有没有受阻塞的方法,都会停止线程。

class  StopThread implements Runnable

{

private boolean flag=true;

public void run()

{

while(flag)

{

synchronized(this)

{

try

{

wait();

}

catch (Exception e)

{

System.out.println(Thread.currentThread().getName()+"...Exception");

flag=false;

}

}

}

public void changeFlag()

{

flag=false;

}

}

class StopThreadDemo

{

public static void main(String[] args)

{

StopThread st=new StopThread();

Thread t1=new Thread(st);

Thread t2=new Thread(st);

t1.start();

t2.start();

int num=0;

while(true)

{

if(num++==10000)

{

//st.changeFlag();

t1.interrupt();

t2.interrupt();

break;

}

System.out.println(Thread.currentThread().getName()+"....."+num);

}

}

}

时间: 2024-08-07 17:00:35

java 线程停止的方法的相关文章

[转]JAVA线程停止的方法

有三种方法可以使终止线程. 1.  使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2.  使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend.resume一样,也可能发生不可预料的结果). 已废弃 3.  使用interrupt方法中断线程. 如何停止java的线程一直是一个困恼我们开发多线程程序的一个问题.这个问题最终在Java5的java.util.concurrent中得到了回答:使用interrupt(),让线程在run方法中停止. 简介

java线程停止的方法

之前介绍过,停机线程可以使用interrupte ,可以用标记,让run执行结束.现在我们来看几个方法. 方法1.使用interrupte方法来执行,通过抛出InterruptedException来结束run运行. package secondThreadStudy; import java.lang.InterruptedException; public class MyThread extends Thread { @Override public void run(){ super.r

Java 线程停止、暂停和继续

Thread 类中停止线程的方法有 stop(),暂停和继续线程的方法有 suspend() 和 resume().然而这些方法已经被废弃了. 异常法停止线程 上代码: public class Test { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); try { Thread.sleep(1000); } catch (InterruptedExceptio

Thread的中断机制(interrupt),循环线程停止的方法

一.中断原理 中断线程 线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个程序本身.线程会不时地检测这个中断标示位,以判断线程是否应该被中断(中断标示值是否为true).它并不像stop方法那样会中断一个正在运行的线程. 判断线程是否被中断 判断某个线程是否已被发送过中断请求,请使用Thread.currentThread().isInterrupted()方法(因为它将

Java线程死锁解决方法(转)

转自:http://leowzy.iteye.com/blog/740859 Java线程死锁如何避免这一悲剧  Java线程死锁需要如何解决,这个问题一直在我们不断的使用中需要只有不断的关键.不幸的是,使用上锁会带来其他问题.让我们来看一些常见问题以及相应的解决方法: Java线程死锁 Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待那些根本不可能被释放的锁,从而导致所有的工作都无法完成.假设有两个线程,分别代表两个饥饿的人,他们必须共享刀叉并轮流吃饭.他们都需要获得两个锁:共享

从头认识多线程-1.8 迫使线程停止的方法-暴力Stop方法

这一章节我们来讨论一下暴力Stop方法. 1.使用样例 package com.ray.deepintothread.ch01.topic_8; public class StopByStopMethod { @SuppressWarnings("deprecation") public static void main(String[] args) throws InterruptedException { ThreadFive threadFive = new ThreadFive

java线程相关基本方法

java线程中常用的基本方法有wait,notify,notifyAll,sleep,join,yield等. 线程的生命周期一共分为五个部分,分别是:新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead).由于cpu需要在多条线程中切换因此线程状态也会在多次运行和阻塞之间切换. 线程等待(wait) 调用该方法会使线程会进入WAITING状态,只有等待另外线程的通知或者被中断才会返回,需要注意的是调用wait()方法后,会释放对象的锁,所以,

java 线程的使用方法

一.使用线程的三种基本方法 1.扩展Thread类 public class Mythread extends Thread{ public void run(){ System.out.println("拓展thread类"); } } //启动线程 Thread myThread =new Thread(); MyThread.start(); 2.实现Runnable接口 public class Mythread implements Runnable{ public MyCl

从头认识多线程-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