`

148_多线程(停止线程)

 
阅读更多
/*
stop方法已经过时。

如何停止线程?
只有一种,run方法结束。
开启多线程运行,运行代码通常是循环结构。

只要控制循环,就可以让run方法结束,也就是线程结束。
*/

class StopThreadDemo implements Runnable{
	private boolean flag = true;
	public void run(){
		while(flag){
			System.out.println(Thread.currentThread().getName()+"...run");
		}
	}
	public void changeFlag(){
		flag = false;
	}
}

class StopThread{
	public static void main(String[] args){
		StopThreadDemo st = new StopThreadDemo();
		
		Thread t1 = new Thread(st);
		Thread t2 = new Thread(st);
		
		t1.start();
		t2.start();
		
		int num = 0;
		
		while(true){
			if(num++ == 60){
				st.changeFlag();
				break;
			}
			System.out.println(Thread.currentThread().getName()+"..."+num);
		}
	}
}

/*
特殊情况,当线程处于了冻结状态,就不会读取到标记,
线程就不会结束。
*/

class StopThreadDemo implements Runnable{
	private boolean flag = true;
	public synchronized void run(){
		while(flag){
			try{
				wait();
			}
			catch(InterruptedException e){
				System.out.println(Thread.currentThread().getName()+"...Exception");
			}
			System.out.println(Thread.currentThread().getName()+"...run");
		}
	}
	public void changeFlag(){
		flag = false;
	}
}

class StopThread{
	public static void main(String[] args){
		StopThreadDemo st = new StopThreadDemo();
		
		Thread t1 = new Thread(st);
		Thread t2 = new Thread(st);
		
		t1.start();
		t2.start();
		
		int num = 0;
		
		while(true){
			if(num++ == 60){
				st.changeFlag();
				break;
			}
			System.out.println(Thread.currentThread().getName()+"..."+num);
		}
	}
}


/*
特殊情况,当线程处于了冻结状态,就不会读取到标记,
线程就不会结束。
当没有指定的方式让冻结的线程恢复到运行状态时,这时需要
对冻结进行清除。强制让线程恢复到运行状态中来。这样就可以操作
标记让线程结束。
Thread类提供该方法interru();
*/

class StopThreadDemo implements Runnable{
	private boolean flag = true;
	public synchronized void run(){
		while(flag){
			try{
				wait();
			}
			catch(InterruptedException e){
				System.out.println(Thread.currentThread().getName()+"...Exception");
				flag = false;
			}
			System.out.println(Thread.currentThread().getName()+"...run");
		}
	}
	public void changeFlag(){
		flag = false;
	}
}

class StopThread{
	public static void main(String[] args){
		StopThreadDemo st = new StopThreadDemo();
		
		Thread t1 = new Thread(st);
		Thread t2 = new Thread(st);
		
		t1.start();
		t2.start();
		
		int num = 0;
		
		while(true){
			if(num++ == 60){
				//st.changeFlag();
				t1.interrupt();
				t2.interrupt();
				break;
			}
			System.out.println(Thread.currentThread().getName()+"..."+num);
		}
	}
}
分享到:
评论

相关推荐

    DELPHI下的多线程程序设计2.rar_delphi 多线程_多线程_多线程 delphi_多线程+delphi

    标题中的“DELPHI下的多线程程序设计2.rar”暗示了这是一个关于Delphi中多线程编程的深入教程,可能是系列教程的第二部分,旨在帮助开发者掌握如何在Delphi中有效地使用多线程。 描述中提到的“利用DELPHI下标准的...

    ftp.rar_FTP 多线程_FTp多线程_ftp vc_多线程 ftp

    在标题"ftp.rar_FTP 多线程_FTp多线程_ftp vc_多线程 ftp"中,关键词“多线程”和“ftp vc”暗示了这个项目是用VC++(Visual C++)开发的,具有多线程功能的FTP客户端或服务器应用程序。多线程技术在FTP应用中的使用...

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

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

    ChanSheng_src.rar_多线程 传 文件_服务器_服务端_聊天_聊天 多线程

    标题中的"ChanSheng_src.rar_多线程 传 文件_服务器_服务端_聊天_聊天 多线程"表明这是一个关于多线程文件传输、服务器和服务端通信以及集成聊天功能的项目源代码压缩包。从描述中我们可以进一步了解这个系统的特点...

    堪称精品的VB多线程控制台源程序代码.rar_vb 多线程_vb6_vb6多线程_vb多线程_多线程

    在VB6.0环境下,开发多线程应用程序是一项挑战,因为VB6本身并不直接支持多线程编程。然而,通过一些技巧和外部库,开发者可以实现这一目标。这个"堪称精品的VB多线程控制台源程序代码.rar"提供了一个示例,展示了...

    vc6.0Multi-Thread.zip_vc6 线程_多线程暂停_线程暂停_线程间 通信

    在本文中,我们将深入探讨如何在Microsoft Visual C++ 6.0(简称VC6.0)环境下进行多线程编程,特别关注线程的创建、暂停、停止以及线程间的通信。多线程编程是软件开发中的一个重要概念,它允许程序同时执行多个...

    vc_多线程下载多线程下载

    在计算机编程领域,多线程下载是一种提高程序执行效率,特别是网络数据传输速度的技术。针对“vc_多线程下载”这一主题,我们将深入探讨如何在Microsoft Visual C++(简称VC)环境中实现多线程下载。 多线程是并发...

    多线程,多接收模式串口类 LsComm 之二_串口多线程_串口_多接收模式串口类LsComm_多线程.zip

    本文件“多线程,多接收模式串口类 LsComm 之二_串口多线程_串口_多接收模式串口类LsComm_多线程.zip”似乎是一个关于如何实现多线程串口通信的实例,特别是使用了名为LsComm的串口类。下面我们将深入探讨这两个关键...

    duoxiancheng.rar_delphi 多线程_多线程

    在IT领域,多线程是一种程序设计技术,它允许应用程序同时执行多个独立的任务或子任务。在本案例中,我们关注的是Delphi编程环境中实现的多线程技术。Delphi是一款强大的面向对象的Windows应用程序开发工具,其核心...

    TThreadTimer_DelphiXE8多线程_多线程_

    在Delphi XE8开发环境中,多线程技术是一种常用的方法来提高应用程序的性能和响应性,特别是对于处理耗时任务或并发操作的情况。本文将深入探讨如何在Delphi XE8中使用多线程,以`TThreadTimer`为例进行讲解。 首先...

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

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

    四线程合并同步下载程序_visualbasic_下载_多线程下载_多线程_源码.zip

    在这个项目中,开发者利用多线程技术来提高文件下载的效率。 多线程是程序设计中的一个重要概念,特别是在处理I/O密集型任务如网络下载时,它可以将任务分解到多个独立的执行线程,从而实现并发处理,提高程序的...

    c#_多线程串口通讯_快速采集

    在IT行业中,多线程和串口通讯是两个至关重要的概念,特别是在实时系统和设备通信领域。本项目“c#_多线程串口通讯_快速采集”利用C# 2008语言实现了对多台设备进行高效、不间断的数据采集,这在工业自动化、物联网...

    Demo_多线程例_

    在C#编程中,多线程是一个核心概念,它允许程序同时执行多个任务,从而提高应用程序的效率和响应性。本示例“Demo_多线程例_”旨在教授如何在C#环境中创建和管理多线程。 1. **线程的创建** 在C#中,可以使用`...

    RecData.rar_串口 多线程_串口采集_串口采集程序_多串口_多线程 串口

    《串口多线程技术在数据采集与存储中的应用》 在现代计算机系统中,串口通信因其简单、可靠的特点,被广泛应用于各种设备的数据交换,尤其是在工业控制、物联网等领域。而多线程技术则是提高系统并发性能,优化资源...

    CommTest_CommTest_多串口_多线程_串口测试工具_

    《串口测试工具CommTest:探索多串口与多线程技术在通信测试中的应用》 串口通信作为计算机通信领域的重要组成部分,广泛应用于各种设备的连接与数据传输。随着现代电子设备对通信效率和吞吐量的需求日益提高,多...

    UseMonitor_C#_fly67x_多线程_

    在C#编程中,多线程是一个核心概念,它允许程序同时执行多个任务,从而提高应用程序的效率和响应性。`UseMonitor_C#_fly67x_多线程_`这个项目标题暗示了我们将探讨如何在C#环境中创建和管理多线程,以及可能涉及的...

    day15_多线程02.zip

    "day15_多线程02"这个标题暗示我们将会深入探讨多线程的第二部分,这可能是一个课程或者教程的第十五天内容,重点在于多线程的进阶主题。尽管没有具体的标签,我们可以假设这个压缩包可能包含了源代码、笔记、示例或...

Global site tag (gtag.js) - Google Analytics