- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
一文讲明白Java中线程与进程、并发与并行、同步与异步
一个程序至少一个进程,一个进程至少一个线程,进程中的多个线程是共享进程的资源(堆,字符串常量池(JDK1.8)/方法区(JDK1.7));
一个进程中有多个线程,多个线程共享进程的堆和方法区资源,但是每个线程有自己的程序计数器,栈区域;
Java中当我们启动mAIn函数时候就启动了一个JVM的进程,而main函数所在线程就是这个进程中的一个线程,也叫做主线程。我们通过JMX(JavaManagementExtensions)管理器去监控一下JVM,看下面这段代码示例:
【代码示例1】
publicclassTest{
publicstaticvoidmain(String[]args){
//获取Java线程管理MXBean
ThreadMXBeanthreadMXBean=ManagementFactory.getThreadMXBean();
//不需要获取同步的monitor和synchronizer信息,仅获取线程和线程堆栈信息
ThreadInfo[]threadInfos=threadMXBean.dumpAllThreads(false,false);
//遍历线程信息,仅打印线程ID和线程名称信息
for(ThreadInfothreadInfo:threadInfos){
System.out.println([+threadInfo.getThreadId()+]+threadInfo.getThreadName());
输出:
[6]MonitorCtrl-Break//监控Ctrl-Break中断信号的线程
[5]AttachListener//添加事件
[4]SignalDispatcher//分发处理给JVM信号的线程
[3]Finalizer//调用对象finalize方法的线程
[2]ReferenceHandler//清除reference线程
[1]main//main线程,程序入口
由此可见一个JVM进程在运行时,包含了很多个子线程。
并发与并行
并行:指两个或两个以上事件或活动在同一时刻发生。如多个任务在多个CPU或CPU的多个核上同时执行,不存在CPU资源的竞争、等待行为。
并发:并发指在某时刻只有一个事件在发生,某个时间段内由于CPU交替执行,可以发生多个事件,存在对CPU资源进行抢占。
同步与异步
同步:发出一个调用之后,在没有得到结果之前,该调用就不可以返回,一直等待。
异步:调用在发出之后,不用等待返回结果,该调用直接返回。
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏呀。原创不易,转载请联系Build哥!
文档评论(0)