Thread的stop,suspend和resume方法不安全,这里使用标识变量,wait和notifyAll实现线程的挂起,恢复和停止.
/**************************************************************************************** Copyright © 2014 Your Company/Org. All rights reserved.<br> Reproduction or transmission in whole or in part, in any form or<br> by any means, electronic, mechanical or otherwise, is prohibited<br> without the prior written consent of the copyright owner. <br> ****************************************************************************************/ package com.beston.concurrency.thread; /** * @ClassName: ThreadCotronl * @Description: 线程控制,实现线程的suspend,resume,stop * @author beston * @date 2014年3月27日 下午5:58:19 * @version v1.0 * */ public class ThreadCotronl { public static void main(String[] args) throws InterruptedException{ SuspendResumeStop srs = new SuspendResumeStop(); Thread t = new Thread(srs); t.start(); Thread.sleep(2000); srs.suspend(); System.out.println("线程挂起。。。。。。"); Thread.sleep(2000); //线程恢复 srs.resume(); Thread.sleep(2000); srs.stop(); System.out.println("线程停止。。。。。。"); } } class SuspendResumeStop implements Runnable{ private boolean paused = false; private volatile boolean stop = false; private final Object LOCK = new Object(); public void run() { while (!stop) { synchronized (LOCK) { if (paused) { try { LOCK.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } else { //业务代码 System.out.println("线程执行中。。。。。。"); try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } } } } } public void suspend() { synchronized (LOCK) { paused = true; LOCK.notifyAll(); } } public void resume() { synchronized (LOCK) { paused = false; LOCK.notifyAll(); } } public void stop(){ stop = true; } }
效果:
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程挂起。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程执行中。。。。。。
线程停止。。。。。。
相关推荐
自.NET 2.0以来,Thread.Suspend()与Thread.Resume()方法已过时,VS提示可以使用如Monitor等技术,但是对于刚接触同步控制的人来说理解起来太复杂。本人利用Thread.Abort()与Thread.Interrupt()可以引起目标线程异常...
实现一个线程结合图形按钮的例子, 方法Start():建立线程类对象后,线程并不能自动运行,用这个方法启动线程。方法IsAlive():判断线程对象是否存在,=true,存在。方法Abort():撤销线程对象。不能撤销一个已不...
1.低功耗模式:对于现在的嵌入式芯片,都提供了各种低功率模式,如:提供了STOP,WAIT,DEEP SLEEP等功率状态,为不同的系统应用使用不同的功率模式提供了很好的解决方案。同时,除DEEP SLEEP模式外,在动态电源管理...
stop,suspend,resume等方法为什么会被遗弃 interrupt,interrupted,isInterrupted方法区别 join方法 yield方法 多线程 进程和线程 进程与线程最主要的区别是它们是操作系统管理资源的不同方式的体现。 准确来说进程与...
高通平台lcd tp操作,suspend resume
答:有两种实现方法,分别是继承Thread类与实现Runnable 接口 用synchronized 关键字修饰同步方法 反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线 程...
1. stop() 和 suspend() 方法为何不推荐使用? 2. sleep() 和 wait() 有什么区别? 3. 同步和异步有何异同,在什么情况下分别使用他们? 4. 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此...
非阻止同步 Wait和Pulse Suspend和Resume 终止线程
终止线程的三种方法 1. 使用退出标志,使线程正常... 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 3. 使用interrupt方法中断线程。
C#多线程教材 入门 概述与概念 创建和开始使用多线程 线程同步基础 同步要领 锁和线程安全 Interrupt 和 Abort 线程状态 ...使用多线程 单元模式和Windows ...Wait和Pulse Suspend和Resume 终止线程 概
1. stop() 和 suspend() 方法为何不推荐使用? 反对使用 stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象 处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出 ...
线程编程方面:反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易...
IOCPTest定义了服务端的测试接口,可以通过控制命令来实现对Server的Start, Stop, Suspend, Resume操作。 client下IClient定义了客户端的接口,SocketClient实现了IClient,通过ConnectProc以及SendPacketProc两个...
休眠/唤醒在嵌入式Linux中是非常重要的部分,嵌入式设备尽可能的进入休眠状 态来延长电池的续航时间.这篇文章就详细介绍一下Linux中休眠/唤醒是如何工作 的, 还有Android中如何把这部分和Linux的机制联系起来的.
线程编程方面 着重JAVA基础 java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
在java的api中有stop、suspend等方法可以达到目的,但由于这些方法在使用上存在不安全性,会带来不好的副作用,不建议被使用。具体原因可以参考Why is Thread.stop deprecated。 在本文中,将讨论中断在java中的...
ThreadStart start = new ThreadStart(Work); Thread thread = new Thread(start); ... thread.Suspend(); Thread.Sleep(3000); Console.WriteLine("挂起后继续执行线程"); thread.Resume();
60、java中有几种方法可以实现一...答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 67、线程的基本概念、线程的基本状态以及状态之间的关系
Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的! 现在,如果你要安全有效地终止一个线程,应该采用以下这些方法: ...
具体研究内容:下载功能实现,包括单线程下载功能,多线程下载功能,多任务下载功能,删除任务的实现。断点续传等功能包括,下载过程中,暂停下载,承接上次未完成的下载任务。 关键词:多线程;线程安全;断点续传...