一、进程与线程
进程是正在运行的程序的实例,线程是程序中一个单一的顺序控制流程。一个进程可以同时运行多个线程,一个线程可以创建和撤消另一个线程。由于线程之间的相互制约,因此线程存在就绪、阻塞、运行三种基本状态。
二、线程状态转换
三、阻塞
1、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。
2、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。
3、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
四、同步
7种同步方法:http://www.cnblogs.com/XHJT/p/3897440.html
五、Runnabl实现线程
六、Thread实现线程
七、CountDownLatch同步工具
CountDownLatch是一个同步计数器类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。构造这个类的时候传入int参数,该参数是计数器的初始值,每调用一次countDown()方法,计数器就减1,计数器大于0时,await()方法会阻塞程序继续执行,让主程序等待子程序的结束。
主要方法
public CountDownLatch(int count);
public void countDown();
public void await() throws InterruptedException
八、Spring线程池ThreadPoolTaskExecutor
<!-- spring thread pool executor --> <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <!-- 线程池维护线程的最少数量 --> <property name="corePoolSize" value="5" /> <!-- 允许的空闲时间 --> <property name="keepAliveSeconds" value="200" /> <!-- 线程池维护线程的最大数量 --> <property name="maxPoolSize" value="10" /> <!-- 缓存队列 --> <property name="queueCapacity" value="20" /> <!-- 对拒绝task的处理策略 ThreadPoolExecutor.CallerRunsPolicy策略 ,调用者的线程会执行该任务,如果执行器已关闭,则丢弃.--> <property name="rejectedExecutionHandler"> <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" /> </property> </bean>
四种策略
ThreadPoolExecutor.AbortPolicy() 抛出java.util.concurrent.RejectedExecutionException异常
ThreadPoolExecutor.CallerRunsPolicy() 重试添加当前的任务,他会自动重复调用execute()方法
ThreadPoolExecutor.DiscardOldestPolicy() 抛弃旧的任务
ThreadPoolExecutor.DiscardPolicy() 抛弃当前的任务
线程池应用:昨晚给的链接,早上看了下,不是很对,今天重新整理一份补上。
相关推荐
【MFC多线程编程多线程概述】 MFC(Microsoft Foundation Classes)是微软提供的一套面向对象的类库,用于简化Windows应用程序开发,其中包括对多线程编程的支持。多线程是现代软件中实现并发执行任务的重要机制,...
### 多线程概述、简介及应用详解 #### 一、多线程概述 多线程(Multithreading)作为一种重要的并发编程技术,其核心在于允许多个独立的任务或操作在同一个进程中并行执行。这一特性使计算机系统能更有效地利用...
6线程概述.xmind
6线程概述.png
15.多线程概述一(下篇)
在多线程程序中,程序本身会告诉操作系统创建除了主线程之外的线程,这些线程被称为子线程或辅助线程。主线程和子线程的主要区别在于它们开始执行的位置。开发者指定了每个子线程开始执行的函数,而主线程总是从程序...
Java程序基础中的多线程是Java编程中一个重要的概念,特别是在构建高效并发应用程序时不可或缺。在Java中,多线程允许程序同时执行多个任务,从而提高计算机系统的利用率和响应速度。 1. **线程与进程**: - **...
#### 一、MFC多线程概述 MFC (Microsoft Foundation Classes) 是微软为简化Windows程序开发提供的一套类库,它封装了Win32 API,使得开发者能够更加方便地进行Windows应用程序的开发。在MFC中,对于多线程的支持...
一、多线程概述 多线程是操作系统提供的一个特性,它允许多个任务在单个进程中并行执行。在E语言中,多线程能够帮助开发者在处理大量I/O操作、复杂的计算任务或者需要实时交互的应用场景时,提高程序的效率。通过...
线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 访问线程 线程的启动、停止和连接 总结 第三章 同步技术 银行的例子 异步读取数据 ...
1.1 线程概述:线程是操作系统分配CPU时间的基本单位,每个进程至少包含一个线程。多线程允许程序同时执行多个任务,提高了计算资源的利用率。 1.2 创建线程:在C#中,可以通过继承`System.Threading.Thread`类或...
九、Linux 线程概述 Linux 线程是进程内独立的一条运行路线,处理器调度的最小单元,也可以称为轻量级进程。线程可以对进程的内存空间和资源进行访问,并与同一进程中的其他线程共享。因此,线程的上下文切换的开销...
#### 三、多线程概述 ##### 1. 进程与线程的概念 - **进程**:是一个应用程序的执行实例,拥有自己的虚拟地址空间、代码、数据和其他系统资源。进程中的资源在其终止时会被销毁或释放。 - **线程**:是进程内部的一...
二、多线程概述 多线程编程是指在一个进程中创建多个线程,每个线程都是进程内部的一个执行单元。主执行线程是进程内部的第一个线程,由系统自动创建。用户可以根据需要创建其他线程,多个线程并发地运行于同一个...
#### 进程与线程概述 在Windows CE (WinCE)操作系统中,进程和线程是系统管理和调度的基本单位。理解进程与线程的基础知识对于开发高效稳定的嵌入式应用程序至关重要。 #### 进程基础 **定义:** 进程是一个程序...
二、多线程概述 1. 进程与线程:进程是操作系统中执行应用程序的实例,拥有独立的虚拟内存空间、资源等。线程则是进程内的执行单元,一个进程至少有一个主线程,可由用户创建额外的线程。多个线程共享同一进程的...
#### 一、Java多线程概述 Java作为一种现代编程语言,内置了对多线程的支持。多线程允许应用程序同时处理多个任务,从而提高程序的响应性和整体性能。在多线程环境中,一个程序可以包含多个线程,每个线程都是独立...
#### 一、线程概述 在现代软件开发中,特别是使用C#进行编程时,理解线程的概念及其重要性是非常关键的。线程是程序执行流程中的最小单位,是进程的一部分,能够并发执行。在C#中,线程主要用于提高程序性能和响应...