「java线程停止」java停止线程的方法

博主:adminadmin 2022-12-10 17:36:08 109

本篇文章给大家谈谈java线程停止,以及java停止线程的方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 中如何使线程运行一定时间后停止?

java中使线程运行一定时间后停止,可以设置一个变量,当满足条件则退出线程:

import static java.lang.Thread.currentThread;

import java.util.concurrent.TimeUnit;

public class ThreadPauseDemo{

   public static void main(String args[]) throws InterruptedException {

       Game game = new Game();

       Thread t1 = new Thread(game, "T1");

       t1.start();

       // 现在停止Game线程

       System.out.println(currentThread().getName() + " is stopping game thread");

       game.stop();

       // 查看Game线程停止的状态

       TimeUnit.MILLISECONDS.sleep(200);

       System.out.println(currentThread().getName() + " is finished now");

   }

}

class Game implements Runnable{

   private volatile boolean isStopped = false;

   public void run(){

       while(!isStopped){

           System.out.println("Game thread is running......");

           System.out.println("Game thread is now going to pause");

           try{

               Thread.sleep(200);

           } catch(InterruptedException e){

               e.printStackTrace();

           }

           System.out.println("Game thread is now resumed......");

       }

       System.out.println("Game thread is stopped......");

   }

   public void stop(){

       isStopped = true;

   }

}

程序输出如下:

Game thread is running......

main is stopping game thread

Game thread is now going to pause

Game thread is now resumed......

Game thread is stopped......

main is finished now

Java如何实现线程的暂停和重新启用?求大神

JAVA中线程开始有start方法,暂停用sleep(time)方法,线程停止用stop方法,线程等待wait方法,java 中没有线程重启一说,只能说线程唤醒notifyAll()或是notify方法,前一个notifyAll()方法是唤醒所有的已休眠或是等待状态下的线程。具体的一种参数请参照JDK文档。

Java中的线程的生命周期大体可分为5种状态。如下:

1.新建(NEW):新创建了一个线程对象。

2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。

3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。

4.阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。阻塞的情况分三种:

(一).等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。

(二).同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。

(三).其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。

5.死亡(DEAD):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。

java多线程中如何有效的停止当前线程。

中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。

线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果。你最好还是牢记以下的告诫。

首先,忘掉Thread.stop方法。虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,这意味着,在未来的JAVA版本中,它将不复存在。

中断线程最好的,最受推荐的方式是,使用共享变量(shared variable)发出信号,告诉线程必须停止正在运行的任务。线程必须周期性的核查这一变量(尤其在冗余操作期间),然后有秩序地中止任务。

java中终止线程的方法?

在Java的多线程编程中,java.lang.Thread类型包含了一些列的方法start(),stop(),stop(Throwable)andsuspend(),destroy()andresume()。通过这些方法,我们可以对线程进行方便的操作,但是这些方法中,只有start()方法得到了保留。本文是海文国际小编搜索整理的关于JAVA中终止线程的方法,供参考复习,希望对大家有所帮助!

如果真的需要终止一个线程,可以使用以下几种方法:

1、让线程的run()方法执行完,线程自然结束。(这种方法最好)

2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,java课程培训机构建议将flag的值设为false。(这种方法也不很好,因为如果while(flag){}方法阻塞了,则flag会失效)

java 怎么强制关闭 一个线程 ?

在Java的多线程编程中,java.lang.Thread类型包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。通过这些方法,我们可以对线程进行方便的操作,但是这些方法中,只有start()方法得到了保留。\x0d\x0a在Sun公司的一篇文章《Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? 》中详细讲解了舍弃这些方法的原因。\x0d\x0a如果真的需要终止一个线程,可以使用以下几种方法: \x0d\x0a1、让线程的run()方法执行完,线程自然结束。(这种方法最好)\x0d\x0a\x0d\x0a2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,将flag的值设为false。(这种方法也不很好,因为如果while(flag){}方法阻塞了,则flag会失效)\x0d\x0a如果线程因为执行sleep()或是wait()而进入Not Runnable状态,假如是wait() 用标志位就方法就不行了,\x0d\x0apublic final void wait(long timeout)\x0d\x0a throws InterruptedException此方法导致当前线程(称之为 T)将其自身放置在对象的等待集中,然后放弃此对象上的所有同步要求。即当前线程变为等待状态\x0d\x0await() 的标准使用方法\x0d\x0asynchronized(obj){\x0d\x0awhile(){\x0d\x0aobj.wait();\x0d\x0a}\x0d\x0a满足条件的处理过程\x0d\x0a}\x0d\x0a而您想要停止它,您可以使用第三种即\x0d\x0a3 使用interrupt(),而程式会丢出InterruptedException例外,因而使得执行绪离开run()方法

java如何关闭线程

关闭线程有几种方法,

一种是调用它里面的stop()方法

另一种就是你自己设置一个停止线程的标记 (推荐这种)

代码如下:

package com.demo;

//测试Thread的stop方法和自己编写一个停止标记来停止线程;

public class StopThread implements Runnable{

//停止线程的标记值boolean;

private boolean flag = true;

public void stopThread(){

flag = false;

}

public void run(){

int i=0;

while(flag){

i++;

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

try{

Thread.sleep(1000);

}catch(Exception e){

}

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

}

}

public static void main(String args[]){

StopThread st = new StopThread();

Thread th = new Thread(st);

Thread th1 = new Thread(st);

th.start();

th1.start();

try{

Thread.sleep(5500);

}catch(Exception e){

}

/*

如果使用Thread.stop方法停止线程,不能保证这个线程是否完整的运行完成一次

run方法;但是如果使用停止的标记位,那么可以保正在真正停止之前完整的运行完

成一次run方法;

*/

th.stop();

st.stopThread();

}

}

关于java线程停止和java停止线程的方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-10,除非注明,否则均为首码项目网原创文章,转载请注明出处。