`
高军威
  • 浏览: 181457 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多线程(停止线程)

阅读更多
如何使线程停止:
代码1:
/**
 * stop 方法已过时;
 * 
 * 如何停止线程?
 * 只有一种,run方法结束。
 * 开启多线程运行,运行代码通常是循环结构。
 * 
 * 只要控制住循环,就可以让run方法结束,也就是线程结束。
 * 
 * 特殊情况:
 * 当线程处于冻结状态。
 * 就不会读取到标记,那么线程就不会结束。
 * 
 * 当没有指定的方式让冻结的线程恢复到运行状态时,这是需要对冻结状态进行清除。
 * 强制让线程恢复到运行状态来。这样就可以操作标记让线程结束。
 * 
 * Thread类提供该方法 interrupt();
 * */
class StopThread implements Runnable
{
	private volatile boolean flag = true;
	public synchronized void run() {
		while(flag)
		{
			try {
				wait();
			} catch (InterruptedException e) {
				System.out.println(Thread.currentThread().getName()+".....Exception");
				this.flag=false;
			}
			System.out.println(Thread.currentThread().getName()+"......run");
		}
	}
	public synchronized void changeFlag() {
		this.flag=false;
	}
}
/**
 * 测试
 * */
class Test
{
	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++==60) {
				/*
				 这样控制使线程停止 或 在 InterruptedException 异常处理,设置标志使线程停止
				 */
				//st.changeFlag(); 
				t1.interrupt();
				t2.interrupt();
				break;
			}
			System.out.println(Thread.currentThread().getName()+"........"+num);
		}
		System.out.println("over");
	}
}


运行结果:
线程结束成功!

分享到:
评论

相关推荐

    C++ 实现 暂停、继续、停止线程的线程类 和 Demo

    简单的说就是用开辟一个线程用来监测两个事件(while 循环,循环内包含了你想要处理的动作,比如此例中的更新进度条),通过控制两个事件的状态来控制循环的启动、暂停和继续。 有个小Bug: BOOL CFThread::...

    PyQt5多线程的执行和停止

    本示例主要探讨如何在PyQt5中实现多线程的执行与停止,并通过进度条进行可视化展示。下面我们将深入理解相关知识点。 首先,了解`QThread`类是关键。`QThread`是Qt提供的线程类,它允许我们把计算密集型任务放在...

    大漠多线程模板_大漠_大漠多线程_

    "大漠多线程模板"是一个专门针对C#开发的多线程处理框架,它为开发者提供了便捷的方式来管理和优化多线程应用。这个框架由知名开发者"大漠"创建,旨在简化复杂的并发编程,提高代码的可读性和可维护性。 多线程允许...

    关于线程的动态停止,一个很经典的多线程麦票程序

    在Java编程中,多线程是并发处理任务的关键机制,允许程序同时执行多个独立的代码段。本示例“线程的动态停止:一个很经典的多线程麦票程序”探讨了如何在运行时控制线程的执行和停止,这对于理解和优化多线程应用...

    鱼刺多线程注册源码例子(鱼刺多线程稳定框架)

    "鱼刺多线程注册源码例子"是一个基于"鱼刺多线程稳定框架"的编程实践,旨在展示如何在软件开发中有效地利用多线程技术来提高程序的执行效率和稳定性。在这个例子中,"鱼刺框架"可能是一个专门为多线程编程设计的开源...

    Qt 多线程及简单实例 demo

    Qt 多线程及简单实例 demo。 多线程的几大特点: 1.多线程的执行顺序无法保证,与操作系统的调度策略和线程优先级等因素有关。 2.多线程的切换可能发生在任何时刻、任何地点。 3.多线程对代码的敏感度高,因此对...

    Java多线程编程线程的协同、停止、暂停、继续等操作实现

    在Java编程中,多线程是并发处理任务的关键技术,它允许程序同时执行多个不同的任务。本篇文章将深入探讨如何实现线程的协同、停止、暂停以及继续等操作,这些都是多线程编程中的核心概念。 1. **线程的协同(协作...

    一个简单的多线程例子,启动线程与终止线程。

    本示例提供了一个简单的多线程应用,旨在帮助理解如何创建、启动和停止线程。以下将详细讲解相关知识点。 首先,我们讨论如何**创建多线程**。在Java中,有两种主要的方法来创建线程:通过继承Thread类或实现...

    多线程框架通用多线程源码.zip

    《深入理解易语言版多线程通用框架》 在计算机编程中,多线程是一种并发执行任务的技术,它允许多个任务在同一时间内运行,从而提高了系统资源的利用率和程序的响应速度。尤其在易语言这样的高级编程环境中,多线程...

    Delphi多线程详解_delphi_delphi多线程_多线程_

    在编程领域,多线程是一种常见且强大的技术,它允许应用程序同时执行多个任务,从而提高程序的效率和响应性。Delphi,作为一个流行的Object Pascal开发环境,提供了丰富的工具和库来支持多线程编程。本篇文章将深入...

    易语言大漠多线程例子.rar

    这个"易语言大漠多线程例子.rar"压缩包包含了一个使用大漠插件实现多线程编程的示例项目。 多线程是现代程序设计中一个关键的概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在易语言中,使用大漠...

    演示PB如何实现多线程

    在PowerBuilder(PB)开发环境中,多线程技术是一种关键特性,它允许应用程序同时执行多个独立的任务,提高程序的响应性和效率。本示例通过"thread.pbl"和"testthread.pbl"两个对象,展示了如何在PB中实现多线程。 ...

    java多线程的讲解和实战

    9. **线程中断**:`interrupt()`方法可以标记线程中断状态,线程可以通过检查`isInterrupted()`或`interrupted()`方法来响应中断请求,从而优雅地停止线程执行。 10. **线程局部变量(ThreadLocal)**:为每个线程...

    MFC多线程的创建,包括工作线程和用户界面线程

    ### MFC多线程的创建详解 #### 一、MFC多线程概述 MFC (Microsoft Foundation Classes) 是微软为简化Windows程序开发提供的一套类库,它封装了Win32 API,使得开发者能够更加方便地进行Windows应用程序的开发。在...

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    多线程面试题

    9. **中断线程**:Thread类的interrupt()方法可以请求线程中断,但并不会立即停止线程,而是让线程在检查到中断标志后自行决定如何退出。 10. **守护线程(Daemon)**:守护线程是一种特殊的线程,当所有非守护线程...

    delphi7 多线程

    delphi7环境下,创建多线程程序,并控制端线程停止,暂停和继续。

    VB6.0 多线程 实验成功

    在VB6.0中实现多线程是一项挑战,但通过本次实验,我们成功地展示了如何在Visual Basic 6.0环境中创建和管理多线程应用。多线程技术允许一个程序同时执行多个独立的任务,提高了应用程序的响应速度和效率,尤其是在...

    java 多线程并发实例

    Java的Thread类提供了start()来启动线程,interrupt()来中断线程,但需要注意的是,中断并不一定能立即停止线程,线程需要自行检查并响应中断状态。 另外,可能还会涉及到死锁、活锁和饥饿等并发问题,这些都是多...

Global site tag (gtag.js) - Google Analytics