多线程中同步异步函数与串行并发队列的组合情况

在学习GCD多线程编程时,需要注意的几个概念,函数,队列,线程。

异步函数 + 并发队列 : 开启多调线程,并发执行操作;

异步函数 + 串行队列 : 开启一条线程,串行执行操作;

同步函数 + 并发队列 : 主线程,串行执行操作;

同步函数 + 串行队列 :主线程,串行执行操作。


主队列特点:如果主队列发现当前主线程有任务在执行,那么主队列会暂停调用队列中的任务,直到主线程空闲。

异步函数 + 主队列 : 主线程串行执行操作

同步函数 + 主队列 : 死循环

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是VC与Labview、Matlab编程论文资料,全部为pdf格式,讲述有VC编程技巧、也有VC与Labview混合编程, VC与matlab混合编程,有365个,约500M,分成4个【独立】压缩包,如果想要全部的论文则需要下载全部压 缩包,否则你下载的可能只是里面的一部分论文。 CAD与VC数据接口平台的研究与应用.pdf Java可视化集成开发环境的研究与实现.pdf Java调用VC_DLL实现串口GPS的访问.pdf LabVIEW_快速构建步进电机控制系统的利器.pdf LabVIEW下普通数据采集卡的驱动与调用.pdf LabVIEW下远程虚拟实验室的研究与实现.pdf LabVIEW与Matlab_Simulink混合编程方法及应用.pdf LabVIEW与Matlab混合编程的实现.pdf LabVIEW与VC程序的动态数据交换.pdf LabVIEW和MATLAB在现代光测图像处理中的应用.pdf LabVIEW在自定义应用层CAN总线通讯中的应用.pdf LabVIEW测控系统的网络访问技术研究.pdf LZW压缩算法VC实现、改进及其应用研究.pdf MATCOM与VC_混合编程中自定义函数作为输入参数的调用方法.pdf MATCOM与VC_混合编程方法在图像处理中的应用.pdf MATLAB与VC_混合编程在系统辨识中的应用.pdf Matlab与VC接口在医学图像处理中的应用.pdf Matlab与VC混合编程技术与实现.pdf MATLAB与VC混合编程技术在数控机床动态特性监测分析中的 Matlab与VC通用接口程序的实现.pdf MATLAB中调用VC混合编程方法的研究与实现.pdf MATLAB和LabVIEW混合编程及在控制系统中的应用.pdf MATLAB和VC_联合编程的COM研究.pdf Matlab和VC混合编程的DSP数据采集系统.pdf MFC中双缓冲处理贴图闪屏问题.pdf MFC对话框程序键盘消息响应与快捷键的实现.pdf MFC应用程序基本框架分析.pdf MFC应用程序拆分窗口的同步更新方法研究.pdf MFC数据库访问接口技术.pdf MFC框架下成员函数访问和回调函数中访问类成员函数.pdf MFC框架下的多通道视景仿真技术.pdf MFC消息响应函数的逆向定位.pdf MFC消息映射机制探讨.pdf MFC的RTTI技术及动态创建的实现.pdf MIMO系统预测控制及其Matlab与VC仿真实现.pdf MScomm控件在VC++6.0串口通信中的应用.pdf MSComm控件在VC_6_0串口通信中的应用.pdf ODBC技术解析与MFCODBC实例应用.pdf Python+语言的可视化编程环境的设计与实现.pdf s3c6410中MFC的研究与应用.pdf VB与VC_环境下基于MapX的二次开发比较.pdf VC++环境下快速可重组测控实验系统的开发.pdf VC6_0与MATLAB7_x混合编程方法研究.pdf VC_6_0和Matlab编程矩阵电路程序.pdf VC_6_0实现客户端与服务器端通讯.pdf VC_6_0实现计算方法中的曲线拟合.pdf VC_6_0读写Access数据库中图像字段的方法研究.pdf VC_6_0通过ADO连接数据库的通用方法研究.pdf VC_SQLServer和Matlab混合编程管理仿真数据.pdf VC_下MSComm控件的串口通信方法.pdf VC_与Matlab混合编程技术应用分析.pdf VC_与MATLAB混合编程的实现方法.pdf VC_与MATLAB混合编程研究及开发实例.pdf VC_与OpenGL混合编程实现三维图形处理.pdf VC_中MFC框架技术探索.pdf VC_中利用DirectX实现3DS文件的读取和控制.pdf VC_中基于MFC的多线程应用程序设计.pdf VC_中连接Oracle数据库的几种方法.pdf VC_串口通信中多线程技术的应用研究.pdf VC_和COM的预测控制算法的仿真研究.pdf VC_和Excel对象接口的研究与应用.pdf VC_和Matlab混合编程的语音识别研究.pdf VC_实现Excel操作自动化的方法研究与应用.pdf VC_实现MSC_Patran二次开发的方法研究.pdf VC_平台下的虚拟仪器应用研究.pdf VC_环境下基于MapX控件的GIS应用软件的开发.pdf VC_环境下实现的GPIB通讯设计.pdf VC_直接调用MatLab数学函数库的关键.pdf VC_编程实现图像梯度锐化.pdf VC_访问数据库的方法研究.pdf VC_读写软件配置参数的若干方法.pdf VC_调用Matlab实现图像处理的3种常用方法比较.pdf VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab混合编程实现成组图像边缘的连续提取.pdf VC与MATLAB混合编程实现方法及具体实例研究.pdf VC与Matlab混合编程的研究与实现.pdf VC与STK的集成及在****数字可视化仿真中的应用.pdf VC中应用MSComm控件实现串口通信.pdf VC平台下基于OLE的Word自动化操作应用.pdf VC平台中的ProE二次开发研究.pdf VC环境下纸箱打样机的矢量图形系统软件开发.pdf VC环境中位图图像的处理方法.pdf VC编程实现软件多语言功能.pdf VC调用MATLAB的方法.pdf Vega和MFC的战斗机飞行仿真系统设计与实现.pdf _NET环境下MFC框架应用的包装集成技术研究.pdf 一种基于VC的串口通讯新方法.pdf 一种改进的LabVIEW串口通信系统的实现.pdf 一种采用VC_识别数字仪器七段码的方法.pdf 一种采用脊线特征的指纹模糊匹配方法.pdf 三维曲面的呈现研究_基于VC_OpenGL.pdf 以LabVIEW为开发平台的电子式互感器校验仪设计.pdf 以VC++为平台电传训练系统研究与实现.pdf 使用MFC和ADO实现不规则窗口通讯录.pdf 分布式软件动态配置环境可视化的研究与实现.pdf 利用Debug探索VisualC_编程原理.pdf 利用MFC实现Windows下工业控制的高精度定时.pdf 利用VC_6_0实现PLC实时监控.pdf 利用VC_实现基于DirectShow的视频播放器开发.pdf 动态链接库中的VC++和Fortran混合编程研究.pdf 单帧DICOM医学图像的解读方法及VC实现.pdf 可视化编程中Focus+Context算法的改进.pdf 可视化集成开发环境研究.pdf 在VC_中调用MATLAB混合编程的方法.pdf 在VC_环境下调用MATLAB方法.pdf 基于ActiveX引擎的VC_与Matlab混合编程及其应用.pdf 基于ARM7和VC平台的高分辨率红外触摸屏设计.pdf 基于AT89C52与MFC的电阻率分布监测系统.pdf 基于COM_VC_Word技术的产品设计说明书自动化研究.pdf 基于COM组件的Matlab7_x与VC_6_0接口技术及实际应用.pdf 基于COM组件的Matlab与VC_混合编程.pdf 基于DSP的可视化多处理器软件设计.pdf 基于Flash和VC的工程制图网上考试研究.pdf 基于Flash页面显示的VC_编程实现.pdf 基于HALCON和VC_混合编程的视觉测量系统设计.pdf 基于LabVIEW与OPC的船舶机舱报警系统设计.pdf 基于LabVIEW与USB的虚拟仪器接口设计.pdf 基于LabVIEW串口通信的研究.pdf 基于LabVIEW和MATLAB混合编程的自适应滤波器设计.pdf 基于LabVIEW和Matlab的自动控制虚拟实验系统.pdf 基于Labview和VC的脑机接口系统设计.pdf 基于LabVIEW和单片机的切削温度虚拟仪器的研究.pdf 基于LabVIEW多功能信号发生器的设计与实现.pdf 基于LabVIEW平台的数据采集与处理系统.pdf 基于LabVIEW数据采集分析实验系统的设计.pdf 基于LabVIEW数据采集系统的设计.pdf 基于LabVIEW的3458A数据采集系统设计.pdf 基于LabVIEW的PID远程控制系统开发.pdf 基于LabVIEW的USB微波功率计软件系统的研制.pdf 基于LabVIEW的Windows通用测控平台的研究与实现.pdf 基于LabVIEW的三种相位差测量法的对比分析.pdf 基于LabVIEW的三维运动测试分析系统的研究.pdf 基于LabVIEW的串口数据采集的实现及应用.pdf 基于LabVIEW的串口通信应用.pdf 基于LabVIEW的信号处理技术应用演示及实验系统设计.pdf 基于LabVIEW的倒立摆控制系统研究.pdf 基于LabVIEW的光纤傅里叶变换光谱仪数据处理技术.pdf 基于LabVIEW的分布式控制系统研究.pdf 基于LabVIEW的列车自动上水监控系统.pdf 基于LabVIEW的单片机USB数据采集系统设计.pdf 基于LABVIEW的单片机串口数据采集系统.pdf 基于LabVIEW的单片机串口通信设计.pdf 基于Labview的图像处理技术.pdf 基于LabVIEW的图像采集系统设计.pdf 基于LabVIEW的声卡虚拟仪器性能测试与实验.pdf 基于LabVIEW的多任务测控系统及数据库的应用研究.pdf 基于LabVIEW的多通道数据采集系统的研究.pdf 基于LabVIEW的实时控制与仿真技术应用研究.pdf 基于LabVIEW的数据库访问技术.pdf 基于LabVIEW的数据访问及报表生成技术.pdf 基于LabVIEW的数据采集_监测系统设计.pdf 基于LabVIEW的数据采集与信号处理系统的设计.pdf 基于LABVIEW的数据采集与分析系统.pdf 基于LabVIEW的数据采集系统研究.pdf 基于LabVIEW的新型电能质量实时监测系统.pdf 基于LabVIEW的普通数据采集卡驱动研究.pdf 基于LabVIEW的模糊PID控制系统.pdf 基于LabVIEW的泰克示波器与计算机的通信.pdf 基于LabVIEW的测试软件设计.pdf 基于LabView的液位预测控制系统的设计.pdf 基于LabVIEW的温湿度测量系统.pdf 基于LabVIEW的电机实验系统的研究.pdf 基于LabVIEW的电能质量综合监测及故障录波系统.pdf 基于LabVIEW的网络化虚拟仪器实验与教学管理系统的设计.pdf 基于LabVIEW的网络化虚拟仪器实验系统的设计.pdf 基于LabVIEW的虚拟信号发生器的研究与实现.pdf 基于LabVIEW的虚拟示波器的设计与实现.pdf 基于LabVIEW的虚拟频谱分析仪设计.pdf 基于LabVIEW的远程中学物理实验系统的设计.pdf 基于LabVIEW的远程测控系统视频采集的设计与实现.pdf 基于LabVIEW的高阻自动测量系统.pdf 基于LabVIEW虚拟仪器实验教学系统的研究.pdf 基于LabVIEW虚拟仪器的数据采集和故障录波.pdf 基于LabVIEW软件的数据采集与分析系统设计.pdf 基于LabVIEW队列状态机的数据采集系统设计.pdf 基于Matcom与COM的VC_Matlab混合编程.pdf 基于Matcom与VC_的信号趋势项处理.pdf 基于MATCOM的MATLAB与VC混合编程技术研究.pdf 基于MATLAB_MFC和Vega的飞机刹车视景仿真.pdf 基于Matlab与VC_混合编程的数字信号处理系统.pdf 基于MATLAB与VC_的水轮机综合特性曲线处理系统研究.pdf 基于Matlab与VC的弱视视功能检查系统的设计与实现.pdf 基于Matlab和VC_6_0联合编程的带式输送机动态分析.pdf 基于Matlab和VC_混合编程的无人机地面控制站实现.pdf 基于MATLAB编译器和MEX文件的VC_与MATLAB混合编程.pdf 基于MATLAB编译器的VC与MATLAB混合编程.pdf 基于MFCSockets实现安全可靠的网络通讯.pdf 基于MFC与ADO接口的企业采购管理系统设计.pdf 基于MFC和UG的飞艇参数化设计系统研究.pdf 基于MFC和Vega的子母弹抛撒仿真研究.pdf 基于MFC实现的小型局域网聊天室.pdf 基于MFC平台下的语音识别系统的设计.pdf 基于MFC的Direct3D应用开发研究.pdf 基于MFC的OpenGL图形开发.pdf 基于MFC的SWF动画文件解析设计.pdf 基于MFC的UG二次开发方法的研究.pdf 基于MFC的Vega应用程序发布.pdf 基于MFC的Word文件编程.pdf 基于MFC的产品结构树管理系统的实现.pdf 基于MFC的代码编辑器设计方法.pdf 基于MFC的加密解密工具的开发.pdf 基于MFC的动态链接库的创建和调用方法研究.pdf 基于MFC的工程软件界面设计.pdf 基于MFC的平板式悬架参数检测仪软件设计.pdf 基于MFC的数据库动态访问技术.pdf 基于MFC的文档加密工具的设计与实现.pdf 基于MFC的纯方位定位系统串口通讯软件设计.pdf 基于MFC的职工信息管理系统的设计与实现.pdf 基于MFC的运动控制系统监测软件的开发与研究.pdf 基于MFC的雨滴水纹动画模拟.pdf 基于MFC的高校人事档案管理信息系统的设计与实现.pdf 基于OpenGL与VC++的虚拟数控孔加工仿真研究.pdf 基于OpenGL与VC++的虚拟数控车床加工仿真研究.pdf 基于TMS320F2812与LabVIEW的串口通信.pdf 基于USB接口的LabVIEW数据采集与传输系统的设计与实现.pdf 基于VC++6.0技术的回采巷道支护专家系统的研究.pdf 基于VC++6.0的ARINC429总线接口卡通讯程序.pdf 基于VC++6.0的图形自动编程系统的研究.pdf 基于VC++6.0的数据库信息查询及打印技术.pdf 基于VC++6.0的网络通信设计.pdf 基于VC++6.0的高速串口通信数据采集系统.pdf 基于VC++变电站自动化系统监控软件的研究与实现.pdf 基于VC++和LabVIEW技术的虚拟示波器的设计与实现.pdf 基于VC++和MATLAB的车型分类及车辆计数系统.pdf 基于VC++的AIS基站网络系统的研究与实现.pdf 基于VC++的小型变电站监控组态软件的设计与开发.pdf 基于VC++的智能压路机人机交互软件开发.pdf 基于VC++的汽车制动系统计算与分析软件的研究与开发.pdf 基于VC++的泵-管-嘴喷油系统仿真计算及可视化研究.pdf 基于VC++的海洋平台危险气体监测系统开发.pdf 基于VC++的电动汽车实验数据分析系统设计.pdf 基于VC++的远程监控系统实现.pdf 基于VC++的遥感图像处理系统初步设计.pdf 基于VC++网络通信平台的设计与开发.pdf 基于VC++语言的增压柴油机工作过程计算软件的开发.pdf 基于VC++酒店管理系统.pdf 基于VC6_0的数字图像压缩平台设计.pdf 基于VC_6_0和ANSYS高压线路覆冰力学分析系统的软件设计.pdf 基于VC_6_0和LabWindows_CVI的虚拟数字示波器的实现.pdf 基于VC_6_0的IEEE1394CCD应用程序开发.pdf 基于VC_6_0的RS_422串口通信设计.pdf 基于VC_6_0的上位机与欧姆龙PLC通信系统研究.pdf 基于VC_6_0的串口通信的设计.pdf 基于VC_6_0的串口通信程序开发.pdf 基于VC_6_0的串口通信程序设计.pdf 基于VC_6_0的光伏逆变并网发电监测系统的设计.pdf 基于VC_6_0的数据库信息查询及打印技术.pdf 基于VC_6_0的网络通信设计.pdf 基于VC_6_0的虚拟汽车数字仪表盘的设计.pdf 基于VC_Maya_Matlab的图形学算法实验平台.pdf 基于VC_MFC的滑动轴承设计软件开发.pdf 基于VC__NET的串行通信的机器人控制系统设计.pdf 基于VC_与LabVIEV的微机采样与保护算法虚拟测试软件的研制.pdf 基于VC_与Matlab的数字信号处理实验平台设计.pdf 基于VC_与OpenGL的飞秒激光加工几何仿真系统的研究.pdf 基于VC_与PMAC的机器人控制软件的开发.pdf 基于VC_串口通信.pdf 基于VC_和COM的复杂系统控制算法的研究.pdf 基于VC_和Direct3D的****PPI显示器仿真.pdf 基于VC_和MATLAB混合编程的可见水印系统设计.pdf 基于VC_和Matlab混编的DICOM医学图像分割实现.pdf 基于VC_和Matlab的图像处理比较研究.pdf 基于VC_和Matlab的数字信号内插处理系统.pdf 基于VC_和OpenGL的STL文件读取显示.pdf 基于VC_和OpenGL的大型机械装置虚拟教学训练系统的开发.pdf 基于VC_和OpenInventor的数控铣削仿真系统研究.pdf 基于VC_实现串口通信的方法.pdf 基于VC_实现的实时数据监控和显示方法.pdf 基于VC_实现的数字与字母识别.pdf 基于VC_开发虚拟数字键盘ActiveX控件.pdf 基于VC_的1553B总线接口仿真软件设计.pdf 基于VC_的3G无线上网卡主功能设计与实现.pdf 基于VC_的DXF数据文件接口的研究.pdf 基于VC_的GoogleEarthKML地标文件的自动生成及应用.pdf 基于VC_的GPS软件接收机.pdf 基于VC_的GPS软件接收机设计.pdf 基于VC_的NC代码自动生成程序开发.pdf 基于VC_的OpenGL三维图形开发设计.pdf 基于VC_的PC机与PLC串口通讯的实现.pdf 基于VC_的UG二次开发技术UG_OpenMenuScript的应用.pdf 基于VC_的Word文档自动生成技术.pdf 基于VC_的四轴运动控制卡软件系统开发研究.pdf 基于VC_的小型计算器程序设计.pdf 基于VC_的工业机器人轨迹规划研究.pdf 基于VC_的弧焊机器人离线编程系统设计.pdf 基于VC_的数据库图像存取技术及实现.pdf 基于VC_的断点续传设计与实现.pdf 基于VC_的无人机飞控地面站软件的开发.pdf 基于VC_的无人直升机仿真.pdf 基于VC_的研究生IMS对话框初步设计.pdf 基于VC_的考勤信息管理系统开发.pdf 基于VC_的起落架的三维仿真系统实现.pdf 基于VC_的门禁管理系统设计.pdf 基于VC_的高效绘图_双缓冲技术.pdf 基于VC_线程的动态数据曲线的绘制方法.pdf 基于VC_路面裂缝图像处理系统研究.pdf 基于VC与MATLAB的声目标识别系统设计.pdf 基于VC与OPENGL数控仿真系统的设计与实现.pdf 基于VC和Matlab混合编程的系统仿真.pdf 基于VC和Matlab的PID仿真软件实现.pdf 基于VC和MATLAB的单梁起重机主梁优化设计.pdf 基于VC和Matlab的短波电台通信仿真设计.pdf 基于VC和OpenGL的STL文件的分层和显示.pdf 基于VC和OpenGL的虚拟数控加工仿真的研究.pdf 基于VC和SQL+Server的实验数据库系统研究.pdf 基于VC和VegaPrime联合开发的巡航****仿真系统研究.pdf 基于VC多线程的实时数据采集系统.pdf 基于VC实现PC机控制手机SMS的发送.pdf 基于VC开发的智能交通诱导系统.pdf 基于VC的3DS三维交互查看器的设计与开发.pdf 基于VC的BMP位图伸缩显示.pdf 基于VC的Modbus协议通信测试软件的实_省略_dbus串口通信与Modbus.pdf 基于VC的MPEG-4解码算法的研究与实现.pdf 基于VC的OPC客户端软件研究与实现.pdf 基于VC的PLC数据采集管理系统.pdf 基于VC的军事信息管理与数据挖掘系统.pdf 基于VC的多线程串口通信程序设计.pdf 基于VC的大型故障树分析软件研究.pdf 基于VC的屏幕保护程序设计.pdf 基于VC的广告语音识别系统的设计研究.pdf 基于VC的振动信号采集与分析系统的研究.pdf 基于VC的数控G代码解释器的设计与实现.pdf 基于VC的无人机模拟训练系统软件开发.pdf 基于VC的时间序列分析法的应用研究.pdf 基于VC的汽车检测系统中检测模块的设计.pdf 基于VC的自动配料系统的研究与设计.pdf 基于VC的飞行仿真器导航仿真系统开发.pdf 基于Vega_MFC的直升机视景仿真设计.pdf 基于中间件的嵌入式虚拟仪器集成开发环境的设计.pdf 基于事件触发并发数据流模型的可视化编程语言研究.pdf 基于双缓冲技术的VC_图形刷新技术的原理和实现.pdf 基于多嵌入式操作系统的可视化编程环境研究.pdf 基于工作流的过程管理可视化平台研究.pdf 基于控件技术的算法可视化的研究.pdf 基于源码库与可重构技术的可视化嵌入式软件开发环境的研制.pdf 基于虚拟机的程序执行与调试的可视化研究.pdf 小波变换VC6_0程序实现.pdf 小议VC中的动态链接库Dll.pdf 录像机磁头VC卷线集中管理系统改造设计.pdf 手机游戏的可视化开发环境Djomeg的研究与实现.pdf 探讨Matlab与VC_联合编程.pdf 支持Vinci图形系统应用的集成开发环境研究——可视化部分的设计与实现.pdf 数据采集系统中的LabVIEW数据库访问技术.pdf 浅析MFC特殊界面及双缓冲技术的实现.pdf 浅论插件技术及其C_VC_实现.pdf 浅谈利用VC_对数据库的开发.pdf 激光加工数控系统G代码编译器的研究与开发.pdf 用MFC动态编程实现8数码问题求解.pdf 用MFC设计PL_0语言简易编译器界面处理研究.pdf 用VC_6_0和MatLAB语言混编开发图像处理实验软件.pdf 用VC_和MODI实现图像文字识别.pdf 用VC_实现软件的自动升级.pdf 用VC实现监控系统数据回放和报表打印.pdf 结合CLIPS和VC_实现规则推理的方法.pdf 综述MATLAB与VC_的交互编程.pdf 车牌定位在VC中的实现.pdf 通用可视化软件平台线路保护系统的研究.pdf 采用MFC开发用户交互界面的新方法.pdf 采用VC_与OpenGL的三维场景编辑系统的研究与设计.pdf 采用VC_开发汽车制动参数计算与分析系统.pdf 面向对象嵌入式GUI研究及其可视化环境实现.pdf 面向虚拟仪器系统的可视化编程语言研究.pdf
Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 (2)建模简单:通过使用线程可以讲复杂并且异步的工作流进一步分解成一组简单并且同步的工作流,每个工作流在一个单独的线程中运行,并在特定的同步位置交互 (3)简化异步事件的处理:服务器应用程序在接受来自多个远程客户端的请求时,如果为每个连接都分配一个线程并且使用同步IO,就会降低开发难度 (4)用户界面具备更短的响应时间:现代GUI框架中大都使用一个事件分发线程(类似于中断响应函数)来替代主事件循环,当用户界面用有事件发生时,在事件线程中将调用对应的事件处理函数(类似于中断处理函数线程的风险 线程安全性:永远不发生糟糕的事情 活跃性问题:某件正确的事情迟早会发生 问题:希望正确的事情尽快发生 服务时间过长 响应不灵敏 吞吐率过低 资源消耗过高 可伸缩性较低 线程的应用场景 Timer 确保TimerTask访问的对象本身是线程安全的 Servlet和JSP Servlet本身要是线程安全的 正确协同一个Servlet访问多个Servlet共享的信息 远程方法调用(RMI) 正确协同多个对象中的共享状态 正确协同远程对象本身状态的访问 Swing和AWT 事件处理器与访问共享状态的其他代码都要采取线程安全的方式实现 框架通过在框架线程中调用应用程序代码将并发性引入应用程序,因此对线程安全的需求在整个应用程序中都需要考虑 基础知识 线程安全性 定义 当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类是线程安全的 无状态对象一定是线程安全的,大多数Servlet都是无状态的 原子性 一组不可分割的操作 竞态条件 基于一种可能失效的观察结果来做出判断或执行某个计算 复合操作:执行复合操作期间,要持有锁 锁的作用 加锁机制、用锁保护状态、实现共享访问 锁的不恰当使用可能会引起程序性能下降 对象的共享使用策略 线程封闭:线程封闭的对象只能由一个线程拥有并修改 Ad-hoc线程封闭 栈封闭 ThreadLocal类 只读共享:不变对象一定是线程安全的 尽量将域声明为final类型,除非它们必须是可变的 分类 不可变对象 事实不可变对象 线程安全共享 封装有助于管理复杂度 线程安全的对象在其内部实现同步,因此多个接口可以通过公有接口来进行访问 保护对象:被保护的对象只能通过特定的锁来访问 将对象封装到线程安全对象中 由特定锁保护 保护对象的方法 对象的组合 设计线程安全的类 实例封闭 线程安全的委托 委托是创建线程安全类的最有效策略,只需要让现有的线程安全类管理所有的状态 在现有线程安全类中添加功能 将同步策略文档化 基础构建模块 同步容器类 分类 Vector Hashtable 实现线程安全的方式 将状态封装起来,对每个公有方法都进行同步 存在的问题 复合操作 修正方式 客户端加锁 迭代器 并发容器 ConcurrentHashMap 用于替代同步且基于散列的Map CopyOnWriteArrayList 用于在遍历操作为主要操作的情况下替代同步的List Queue ConcurrentLinkedQueue *BlockingQueue 提供了可阻塞的put和take方法 生产者-消费者模式 中断的处理策略 传递InterruptedException 恢复中断,让更高层的代码处理 PriorityQueue(非并发) ConcurrentSkipListMap 替代同步的SortedMap ConcurrentSkipListSet 替代同步的SortedSet Java 5 Java 6 同步工具类 闭锁 *应用场景 (1)确保某个计算在其需要的所有资源都被初始化后才能继续执行 (2)确保某个服务在其所依赖的所有其他服务都已经启动之后才启动 (3)等待知道某个操作的所有参与者都就绪再继续执行 CountDownLatch:可以使一个或多个线程等待一组事件发生 FutureTask *应用场景 (1)用作异步任务使用,且可以使用get方法获取任务的结果 (2)用于表示一些时间较长的计算 状态 等待运行 正在运行 运行完成 使用Callable对象实例化FutureTask类 信号量(Semaphore) 用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量 管理者一组虚拟的许可。acquire获得许可(相当于P操作),release释放许可(相当于V操作) 应用场景 (1)二值信号量可用作互斥体(mutex) (2)实现资源池,例如数据库连接池 (3)使用信号量将任何一种容器变成有界阻塞容器 栅栏 能够阻塞一组线程直到某个事件发生 栅栏和闭锁的区别 所有线程必须同时到达栅栏位置,才能继续执行 闭锁用于等待事件,而栅栏用于等待线程 栅栏可以重用 形式 CyclicBarrier 可以让一定数量的参与线程反复地在栅栏位置汇集 应用场景在并行迭代算法中非常有用 Exchanger 这是一种两方栅栏,各方在栅栏位置上交换数据。 应用场景:当两方执行不对称的操作(读和取) 线程池 任务与执行策略之间的隐形耦合 线程饥饿死锁 运行时间较长的任务 设置线程池的大小 配置ThreadPoolExecutor 构造参数 corePoolSize 核心线程数大小,当线程数= corePoolSize的时候,会把runnable放入workQueue中 如果队列满了,而且正在运行的线程数量大于或等于 maximumPoolSize,那么线程池会抛出异常,告诉调用者“我不能再接受任务了” keepAliveTime 保持存活时间,当线程数大于corePoolSize的空闲线程能保持的最大时间。 workQueue 保存任务的阻塞队列 如果正在运行的线程数量大于或等于 corePoolSize,那么将这个任务放入队列。如果这时候队列满了,而且正在运行的线程数量小于 maximumPoolSize,那么还是要创建线程运行这个任务 threadFactory 创建线程的工厂 handler 拒绝策略 unit 是一个枚举,表示 keepAliveTime 的单位(有NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS,7个可选值 线程的创建与销毁 管理队列任务 饱和策略 AbortPolicy DiscardPolicy DiscardOldestPolicy CallerRunsPolicy 线程工厂 在调用构造函数后再定制ThreadPoolExecutor 扩展 ThreadPoolExecutor afterExecute(Runnable r, Throwable t) beforeExecute(Thread t, Runnable r) terminated 递归算法的并行化 构建并发应用程序 任务执行 在线程中执行任务 清晰的任务边界以及明确的任务执行策略 任务边界 大多数服务器以独立的客户请求为界 在每个请求中还可以发现可并行的部分 任务执行策略 在什么(What)线程中执行任务? 任务按照什么(What)顺序执行(FIFO、LIFO、优先级)? 有多少个(How Many)任务能并发执行? 在队列中有多少个(How Many)任务在等待执行? 如果系统由于过载而需要拒绝一个任务,那么应该选择哪一个(Which)任务?另外,如何(How)通知应用程序有任务被拒绝? 在执行一个任务之前或之后,应该进行什么(What)动作? 使用Exector框架 线程池 newFixedThreadPool(固定长度的线程池) newCachedThreadPool(不限规模的线程池) newSingleThreadPool(单线线程池) newScheduledThreadPool(带延迟/定时的固定长度线程池) 具体如何使用可以查看JDK文档 找出可利用的并行性 某些应用程序中存在比较明显的任务边界,而在其他一些程序中则需要进一步分析才能揭示出粒度更细的并行性 任务的取消和关闭 任务取消 停止基于线程的服务 处理非正常的线程终止 JVM关闭 线程池的定制化使用 任务和执行策略之间的隐性耦合 线程池的大小 配置ThreadPoolExecutor(自定义的线程池) 此处需要注意系统默认提供的线程池是如何配置的 扩展ThreadPoolExector GUI应用程序探讨 活跃度(Liveness)、性能、测试 避免活跃性危险 死锁 锁顺序死锁 资源死锁 动态的锁顺序死锁 开放调用 在协作对象之间发生的死锁 死锁的避免与诊断 支持定时的显示锁 通过线程转储信息来分析死锁 其他活跃性危险 饥饿 要避免使用线程优先级,因为这会增加平台依赖性,并可能导致活跃性问题。在大多数并发应用程序中,都可以使用默认的线程优先级。 糟糕的响应性 如果由其他线程完成的工作都是后台任务,那么应该降低它们的优先级,从而提高前台程序的响应性。 活锁 要解决这种活锁问题,需要在重试机制中引入随机性(randomness)。为了避免这种情况发生,需要让它们分别等待一段随机的时间 性能与可伸缩性 概念 运行速度(服务时间、延时) 处理能力(吞吐量、计算容量) 可伸缩性:当增加计算资源时,程序的处理能力变强 如何提升可伸缩性 Java并发程序中的串行,主要来自独占的资源锁 优化策略 缩

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值