`
wwty
  • 浏览: 542976 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

线程的关闭

阅读更多

线程的关闭:

针对Thread类的stop方法:

该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。 

 

当前可以采取的线程终止模型如下:

class TestThread
{
	public static void main(String[] args)
	{
		Thread1 t1=new Thread1();
		t1.start();
		int index=0;
		while(true)
		{
			if(index++==500)
			{
				t1.stopThread();
				t1.interrupt();
				break;
			}
			System.out.println(Thread.currentThread().getName());
		}
		System.out.println("main() exit");
	}
}

class Thread1 extends Thread
{
	private boolean bStop=false;
	public synchronized void run()
	{
		while(!bStop)
		{
			try
			{
				wait();
			}
			catch(InterruptedException e)
			{
				//e.printStackTrace();
				if(bStop)
					return;
			}
			System.out.println(getName());
		}
	}
	public void stopThread()
	{
		bStop=true;
	}
}

 

分享到:
评论

相关推荐

    封杀MessageBox线程关闭对话框

    标题"封杀MessageBox线程关闭对话框"暗示了我们要讨论如何避免或阻止`MessageBox`的出现,以及如何自动关闭它。 首先,`MessageBox`是线程相关的,这意味着它会阻塞调用线程的执行,直到用户关闭对话框为止。如果要...

    线程关闭javacv关闭20190508.rar

    在这个“线程关闭javacv关闭20190508.rar”项目中,我们主要关注的是如何正确地开启和关闭线程,以及利用JavaCV进行推流和停止推流的操作。 首先,让我们深入理解多线程在JavaCV中的应用。在Java中,线程是程序执行...

    C# winform动态创建和关闭多线程源码 可运行

    本项目“C# Winform动态创建和关闭多线程源码 可运行”提供了一个完整的解决方案,适用于Visual Studio 2010,它演示了如何在Winform应用中灵活地创建和管理多个线程。 一、线程基础 线程是操作系统分配CPU时间的...

    c# 多线程任务中结束全部线程

    在给定的代码片段中,虽然存在一些乱码字符,但我们可以从中抽取出与多线程相关的知识点,包括如何创建线程、使用委托进行跨线程调用以及如何优雅地关闭线程。 ### 创建线程 在C#中,`System.Threading.Thread`类...

    【C#多线程】 动态创建多个线程后 需要关闭其中某个线程的解决实例。

    例如: for (int i = 0; i ; i++) { ...如何关闭其中的一个线程呢? 请下载解决方案。 呵呵,这个实例10分值的买, 觉得好的话就评个分吧,评分后会返回你11分 (一定要评分,光评论是不返分的)

    解决python父线程关闭后子线程不关闭问题

    ### 解决Python父线程关闭后子线程不关闭的问题 在Python中,利用`threading`模块可以轻松地创建并管理多个线程。但在实际应用中,有时会遇到一个棘手的问题:当父线程(即创建子线程的线程)结束时,其子线程并...

    Java线程关闭的3种方法

    "Java线程关闭的3种方法" Java线程关闭是Java编程中非常重要的一个话题,今天我们将介绍Java线程关闭的3种方法。 第一种方法:使用状态位 使用状态位是Java线程关闭的一种简单方法。我们可以使用一个volatile的...

    PyQt5多线程的执行和停止

    要实现“可以单独关闭和运行”的功能,我们需要在每个工作类中定义相应的信号(Signals)和槽(Slots)。信号是Qt中的事件机制,当某个条件满足时,可以触发信号;而槽是接收信号并执行相应操作的函数。我们可以为每...

    VS2019 C++ 彻底关闭所有线程

    本工程是VS2019的C++语言的,我在网上找了很多关于关闭线程的例子,都不能彻底关闭开着的线程,这个例子是个C++函数,我放到了MFC界面上,这样看着更直观,用的时候,直接把关闭线程的函数提取出来拿来用。...

    关闭线程.txt

    本文将基于给定的代码片段,详细介绍线程关闭的基本原理、推荐做法以及潜在的风险。 ### 基本概念与背景 在Java中,线程是程序执行的最小单位,它允许并发执行任务,提高应用性能。然而,当线程不再需要运行或需要...

    易语言正确退出线程

    5. **异常处理**:在编写线程代码时,应考虑异常处理,确保在出现异常时也能正确地关闭线程,避免程序崩溃。 6. **状态检查**:在线程运行过程中,定期检查是否需要退出,例如在循环体的开始或结束处检查一个全局或...

    windows 线程控制实例

    线程关闭通常在完成工作后进行,使用`CloseHandle()`函数来释放线程句柄,但并不立即终止线程。线程会自行执行完剩余的代码。例如: ```cpp CloseHandle(hThread); ``` 挂起和恢复线程是线程控制的另一种方式,这...

    socket 多线程 例程 非阻塞模式

    4. **关闭连接**: 当通信完成后,工作线程关闭socket并退出。 在VC++6.0的环境中,你需要包含必要的头文件(如winsock2.h和ws2tcpip.h),链接相应的库(如ws2_32.lib),并确保正确初始化Winsock。同时,多线程...

    VC 打开关闭一个线程

    2. **关闭线程**: 线程的关闭通常通过调用`ExitThread`或等待线程完成(使用`WaitForSingleObject`或`WaitForMultipleObjects`)来实现。当线程函数执行完毕,线程自然结束;或者通过`ExitThread`函数立即结束线程,...

    WinFormInvoke_winform多线程_防卡死_

    例如,当工作线程完成任务后,需要通知UI线程关闭进度条,这就需要用到事件和信号量等同步机制。 总结,防止WinForm界面卡死,关键在于利用多线程将耗时操作移出UI线程,并通过`Invoke`或`BeginInvoke`方法在UI线程...

    多线程 服务器端-客户端 c

    7. 线程结束:当完成通信后,线程关闭套接字并退出。 客户端则相对简单,主要涉及以下步骤: 1. 创建套接字:调用`socket()`创建一个客户端套接字。 2. 连接服务器:使用`connect()`函数与服务器建立连接。 3. ...

    c# winform 多线程测试例子(初学)

    六、异常处理和线程关闭 确保在线程中正确处理异常,防止程序意外终止。当线程不再需要时,应调用`Thread.Join`或`Thread.Abort`来结束线程,但`Thread.Abort`应谨慎使用,因为它可能会导致未捕获的异常。 总结,C#...

    VC实现多线程socket通信

    4. **线程退出**:完成通信后,新线程关闭其socket,并安全地终止。 在VC中,可以使用`_beginthreadex`或`CreateThread`函数创建新线程,同时,需要关注线程间的异常处理和资源管理,避免内存泄漏。 总结来说,"VC...

    Linux下多线程轻量级HTTP服务器

    6. 关闭连接:完成请求处理后,线程关闭与客户端的连接,释放资源。 项目"MyPoorWebServer-master"很可能包含了服务器的源代码和编译说明。代码可能分为以下几个模块: 1. 主程序模块:初始化服务器,设置监听套接...

Global site tag (gtag.js) - Google Analytics