![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 93
毒毒毒毒丶
这个作者很懒,什么都没留下…
展开
-
多线程学习总结——锁
何为同步?JVM规范规定JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使用monitorenter和monitorexit指令实现,而方法同步是使用另外一种方式实现的,细节在JVM规范里并没有详细说明,但是方法的同步同样可以使用这两个指令来实现。monitorenter指令是在编译后插入到同步代码块的开始位置,而monitorexit是插入到...转载 2018-09-08 22:44:34 · 134 阅读 · 0 评论 -
多线程学习总结(二)
一、多线程带来的问题(一)活跃性问题死锁:两个线程相互等待对方释放资源 饥饿: 多线程并发时优先级低的线程永远得不到执行;线程被永久阻塞在一个等待进入同步块的状态;等待的线程永远不被唤醒 活锁:活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试—失败—尝试—失败的过程。处于活锁的实体是在不断的改变状态,活锁有可能自行解开。如何避免饥饿问题:对于优先级引发的...原创 2018-09-08 23:15:32 · 175 阅读 · 0 评论 -
多线程学习总结(一)
一、进程与线程1、进程和线程的定义进程:进程是进行资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。线程:线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的...原创 2019-03-14 22:18:16 · 243 阅读 · 0 评论 -
串行、并行与并发
假设我们有3件事情(事情A、事情B和事情C)要完成,完成每件事情所需的时间包括实际投人时间(如做些准备活动所需的时间)和等待的时间,完成这些事情所需的时间为:事情A耗时15分钟(实际投入5分钟,等待10分钟)、事情B耗时10分钟(实际投人2分钟,等待8分钟)、事情C耗时10分钟(实际投入10分钟,无等待耗时)。那么,我们有3种方式来完成这几件事情,如图所示:串行( Sequenti...原创 2019-03-14 23:19:05 · 1016 阅读 · 0 评论 -
多线程学习总结——线程常用的API
(一)Object类相关api(相关的方法一定是当前线程在获取了对应的锁对象才能调用,否则会抛出异常) 方法 功能 Object.wait() 锁对象调用该方法使当前线程进入等待状态,并立刻释放锁对象,直到被其他线程唤醒进入等锁池。 Object.wait(long) 锁对象调用该...原创 2019-03-14 23:26:58 · 452 阅读 · 0 评论 -
多线程学习总结——线程安全性问题
一、竞态定义: 状态变量:即类的实例变量、静态变量。 共享变量:即可以被多个多线程共同访问的变量。状态变量由于可以被多个线程共享,所以也被称之为共享变量。共享变量强调的是共享,不一定就会被多个线程共同访问。 竞态:当多个线程同时访问共享资源(如共享变量)时就会发生竞态。发生竞态的两种模式:read-modify-write(读-改-写): 该操作一般...原创 2019-03-16 01:37:12 · 168 阅读 · 0 评论