原文:http://www.cnblogs.com/DreamSea/archive/2012/01/11/JavaThread.html
不废话直接上图:
1)优先级(priority)
每个类都有自己的优先级,一般property用1-10的整数表示,默认优先级是5,优先级最高是10;优先级高的线程并不一定比优先级低的线程执行的机会高,只是执行的机率高;默认一个线程的优先级和创建他的线程优先级相同;
2)Thread.sleep()/sleep(long millis)
当前线程睡眠/millis的时间(millis指定睡眠时间是其最小的不执行时间,因为sleep(millis)休眠到达后,无法保证会被JVM立即调度);sleep()是一个静态方法(static method) ,所以他不会停止其他的线程也处于休眠状态;线程sleep()时不会失去拥有的对象锁。 作用:保持对象锁,让出CPU,调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留一定的时间给其他线程执行的机会;
让出CPU的使用权,给其他线程执行机会、让同等优先权的线程运行(但并不保证当前线程会被JVM再次调度、使该线程重新进入Running状态),如果没有同等优先权的线程,那么yield()方法将不会起作用。
当一个线程执行到wait()方法时,他就进入到一个和该对象相关的等待池(Waiting Pool)中,同时失去了对象的机锁—暂时的,wait后还要返还对象锁。当前线程必须拥有当前对象的锁,如果当前线程不是此锁的拥有者,会抛出IllegalMonitorStateException异常,所以wait()必须在synchronized block中调用。
唤醒在当前对象等待池中等待的第一个线程/所有线程。notify()/notifyAll()也必须拥有相同对象锁,否则也会抛出IllegalMonitorStateException异常。
相关推荐
### 线程的五种状态详解 #### 一、新建状态(NEW) - **定义**:当通过 `new` 关键字创建了一个线程对象时,该线程处于新建状态。 - **特点**: - 线程对象已创建,但尚未启动。 - 此时线程不会占用任何 CPU ...
### C#多线程详解:Thread #### 一、多线程的概念与优势 多线程是现代操作系统中实现高效程序执行的关键技术之一。在Windows这样的多任务操作系统中,一个程序运行时通常会以进程的形式存在,而一个进程中又包含了...
C++中的thread类是C++11标准引入的,用于在C++程序中创建和管理线程。它被定义在<thread>头文件中,是C++标准库的一部分。通过使用std::thread类,程序员可以创建新的线程来执行特定的任务,从而实现程序的多线程...
ThreadX对中断服务进行了精细管理,中断发生时,系统会保存当前线程的状态,然后切换到中断处理程序。中断完成后,系统恢复先前的状态,继续执行被中断的线程。这种机制保证了中断的快速响应,同时也维护了实时系统...
### MFC的状态模块状态、进程状态、线程状态详解 #### 9.1 模块状态 MFC中的模块状态是指一个可执行程序或使用MFCDLL的动态链接库(DLL)的状态信息。例如,一个OLE控件可以视为一个模块。每个应用程序的模块都有...
以上是对"Java多线程详解"主题的详细阐述,涵盖了Java多线程的基本概念、实现方式、线程控制、线程池、并发集合、线程间通信以及并发编程中常见的问题和解决方案。学习和熟练掌握这些内容对于开发高效的多线程Java...
线程的生命周期包括四个主要状态:创建状态、可运行状态、不可运行状态和消亡状态。创建状态是在使用`new`操作符创建线程对象时,此时线程仅是一个空对象,系统还未为其分配资源。调用`start()`方法后,线程进入可...
4. **阻塞状态**:线程可能因为各种原因被阻塞,比如等待I/O操作完成、等待其他线程释放锁或调用`Thread.sleep()`等。 5. **终止状态**:线程执行完毕或因异常终止时,进入终止状态。 #### 四、线程同步与互斥:...
### JAVA多线程编程详解 #### 一、深入理解多线程 多线程机制是现代编程语言中处理并发操作的关键技术之一,尤其在Java中,多线程提供了高效的资源利用方式,允许程序中多个指令流同时运行,提高程序执行效率。每...
`start()`方法的注释提供了更深入的洞察,它提到`start()`方法会检查线程状态,确保线程未启动,然后将线程加入到线程组,最后调用`start0()`。如果`start0()`成功,线程将被启动,否则,如果线程无法启动,将会抛出...
Android提供了AsyncTask、Handler、Thread和Service等机制来实现多线程。书中将介绍如何使用这些工具来避免ANR(Application Not Responding)错误。 5. 数据缓存:为了提高用户体验,网络数据的本地缓存是必要的。...
学习资料还可能包含调试技巧和性能优化的方法,如使用GDB进行远程调试、分析工具rt_thread_dump分析系统状态,以及如何通过调整参数提高系统响应速度和资源利用率。 总之,这个“RT-thread 学习资料大全”是学习和...
《ThreadX嵌入式操作系统详解》 一、ThreadX概览与核心特性 ThreadX是一款高性能的嵌入式实时操作系统(RTOS),由Express Logic公司开发并拥有。它旨在为嵌入式系统提供高效的多任务处理能力,适用于各种硬件平台...
VC++提供了创建和管理线程的API,如CreateThread和JoinThread,以及同步机制,如临界区、互斥量和信号量。 6. **异常处理**:C++的异常处理机制是一种处理程序错误的方式,它允许在出现异常情况时中断正常流程,转...
5. **死亡状态**:当线程的`run()`方法执行完毕或调用了`Thread.stop()`方法后,线程进入死亡状态。一旦线程死亡,就不能再次启动。 理解线程的状态对于管理多线程应用程序至关重要。例如,可以通过控制线程的阻塞...
`Thread.State`枚举类定义了这些状态,可以通过`Thread.getState()`获取当前线程状态。 4. **线程同步**: - **synchronized关键字**:用于控制多线程对共享资源的访问,确保同一时间只有一个线程可以执行特定代码...
《RTThread AT组件在FreeRTOS上的移植与修改详解》 在嵌入式系统开发中,RTThread是一款广泛应用的实时操作系统,而FreeRTOS则是另一款轻量级、高效的实时操作系统。两者都有各自的优点,而在实际项目中,有时我们...