------------多线程状态-----------------
除了新建new, 就绪runnable, 运行running, 死亡dead外,核心的就是阻塞状态blocked
可以分为三种
休眠 sleep
等待 wait
监视 synchronized
常说的死锁发生在wait和synchronized中
wait notifyAll
见图片
访问两个共享资源死锁
见图片
----------后台线程-----------
setDaemon(true)
所有前台线程都结束后,后台线程会自动结束,整个程序就停下来了
main是前台线程
垃圾回收是后台线程
------------yield-----------------
thread.yield()
在多线程程序中,为了防止某线程独占CPU资源(这样其它的线程就得不到"响应"了).可以让当前执行的线程"休息"一下.但是这种thread.yield() 调用,并不保证下一个运行的线程就一定不是该线程.
可以考虑用Thread.sleep(long millis);方法强制当前线程睡眠至少millis毫秒.但是使用时要对该方法捕获.
调用方法很简单,只要在要睡眠的线程中加入
------------interrupt-----------------
interrupt()只是改变中断状态而已
interrupt()不会中断一个正在运行的线程。这一方法实际上完成的是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。
如果线程没有被阻塞,这时调用interrupt()将不起作用;如果想起作用,必须不断判断系统中断状态
参考
http://sishuok.com/forum/blogPost/list/3674.html
http://longdick.iteye.com/blog/453615
http://zhang247124629.iteye.com/blog/1174008
http://longcxm.iteye.com/blog/799991
- 大小: 100.8 KB
- 大小: 62.2 KB
分享到:
相关推荐
最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...
面试-JVM+多线程v2 面试-JVM+多线程v2面试-JVM+多线程v2 面试-JVM+多线程v2面试-JVM+多线程v2 面试-JVM+多线程v2面试-JVM+多线程v2 面试-JVM+多线程v2面试-JVM+多线程v2 面试-JVM+多线程v2面试-JVM+多线程v2 面试-...
第二套:c语言Socket编程C语言SOCKET编程指南.c语言多进程多线程程.pdf,Linux Socket rogramming by Example.pdf,Linux 多线程等10多个资料....
2. 线程安全测试:检查代码是否正确地处理了多线程环境下的数据访问。 3. 资源消耗测试:分析多线程运行时内存、CPU和其他资源的使用情况。 4. 并发测试:评估程序在高并发场景下的稳定性和响应能力。 5. 错误处理和...
2. **线程同步**:在多线程环境中,防止数据竞争和确保资源安全访问是至关重要的。C#提供了多种同步机制,如`Mutex`、`Semaphore`、`Monitor`和`lock`关键字。模板可能内置了这些同步工具的使用,减少了因不当同步...
2. **共享资源**:在多线程环境中,多个线程可能需要访问同一个数据或对象,这就形成了共享资源。 3. **竞态条件**:当两个或多个线程同时访问并修改共享资源时,如果没有适当的同步措施,可能导致数据的不一致性,...
2. Ttimer.ocx控件:这是一个可能用于多线程环境的ActiveX定时器控件,可以触发并发操作。 3. 多线程的优势:多线程能提高应用的响应速度,特别是在需要执行耗时任务时,可以避免UI冻结。 4. 共享机制与多线程的区别...
2. **资源利用率最大化**:多线程使得CPU的空闲时间减少,尤其是在多核处理器环境下,每个核心都可以处理一个线程,使得系统资源得到充分利用。 3. **任务独立性**:每个线程执行的任务相互独立,即使其中一个线程...
在编程领域,多线程是实现并发执行任务的重要机制,特别是在易语言中,它能有效提升程序的执行效率。易语言是一种中文编程语言,旨在降低编程门槛,让普通用户也能进行程序开发。本文将深入探讨易语言中的多线程以及...
在IT领域,多线程编程是一项关键技能,尤其是在性能优化和并发处理方面。本文将深入探讨多线程编程的基础知识,以帮助初学者快速入门。 首先,我们需要理解什么是多线程。多线程是指在一个进程中同时执行多个独立的...
《网络编程中的多线程技术》 多线程技术在网络编程中扮演着至关重要的角色,它允许程序同时执行多个任务,提高了系统的效率和响应性。本文将深入探讨多线程的概念、创建方法以及互斥与同步机制。 首先,我们理解...
在编程领域,多线程是一种重要的并发执行机制,它允许程序同时执行多个任务,从而提高系统资源利用率和程序响应速度。E语言(可能是错误输入或者是某个特定编程环境或语言的简称)中的多线程功能也不例外。本文将...
2. **线程同步与互斥**:在多线程环境中,确保数据的一致性和完整性至关重要。线程同步可以通过`Mutex`、`Monitor`、`Semaphore`、`ReaderWriterLockSlim`等工具实现。例如,`Mutex`可以实现全局资源的独占访问,...
本文将详细探讨PB(包括PB9、PB12.5以及PB.NET)实现多线程的方法。 一、PB9的多线程实现 在PB9中,虽然官方并未直接支持多线程,但开发者可以通过使用Windows API函数来实现。一种常见的方式是创建一个新的窗口类...
《深入理解易语言版多线程通用框架》 在计算机编程中,多线程是一种并发执行任务的技术,它允许多个任务在同一时间内运行,从而提高了系统资源的利用率和程序的响应速度。尤其在易语言这样的高级编程环境中,多线程...
"鱼刺多线程注册源码例子"是一个基于"鱼刺多线程稳定框架"的编程实践,旨在展示如何在软件开发中有效地利用多线程技术来提高程序的执行效率和稳定性。在这个例子中,"鱼刺框架"可能是一个专门为多线程编程设计的开源...
在编程领域,尤其是在开发高效、响应迅速的应用程序时,多线程技术扮演着至关重要的角色。Qt5框架提供了一种方便的方式来实现多线程,它允许开发者在不同的线程中执行任务,从而避免主线程(GUI线程)因处理耗时操作...
在编程领域,多线程是实现并发执行任务的关键技术,特别是在C#这样的语言中,它提供了丰富的多线程支持。本文将深入探讨C#中的多线程实例,以帮助开发者理解如何有效地利用多核处理器资源,提高程序的执行效率。 多...
2.多线程的切换可能发生在任何时刻、任何地点。 3.多线程对代码的敏感度高,因此对代码的细微修改都可能产生意想不到的效果。 先由一个简单的例子引出多线程 先作出这个简单的界面 “开始”对应的槽函数是:...