多线程
文章平均质量分 81
全面认识多线程!!!
努力的小徐
道阻且长啊
展开
-
【多线程】synchronized的特性
在调用 increase2 的时候, 先加了一次锁, 执行到 increase 的时候, 又加了一次锁. (上个锁还没释放, 相当于连续加两次锁),因为synchronized是可重入锁,所以上面的代码不会出现死锁问题。偏向锁不是真的加锁,只是在对象头中做一个偏向锁的标记,记录这个锁属于哪个线程,后续如果没有所来竞争就不进行同步操作,避免了加解锁的开销。如果锁竞争进一步激烈,自旋锁就不能快速获取锁的状态了,进而就会升级为重量级锁(此处的重量级锁就是用到内核提供的mutex)会根据情况,进行依次升级。原创 2023-11-08 21:27:51 · 99 阅读 · 0 评论 -
【多线程】线程池总结带你详细了解线程池
② 使用 Executors.newCachedThreadPool()创建出的线程池对象的特点是线程池数目能够动态适应,随着往线程池里添加任务,这个线程池里的线程数量会根据需要自动被创建,创建之后也不会着急销毁,会在线程池里存在一段时间以备随时使用。handler:线程池的拒绝策略,一个线程池能够容纳的任务数量有上限,当持续向线程池中添加任务,一旦达到上限,不同的拒绝策略有不同的效果。corePoolSize:核心线程数------>我们如果把线程池理解成一个公司,核心线程数就相当于正式员工数量。原创 2023-11-03 16:23:26 · 125 阅读 · 0 评论 -
【多线程】线程与进程的区别与联系
带你一分钟了解什么是多线程原创 2023-10-12 12:48:22 · 266 阅读 · 6 评论 -
【多线程】线程安全问题和解决方案
这个就是不具备原子性的。要想第二次加锁成功就需要第一次加锁释放锁,第一次要想释放锁就需要执行到 1 的的位置,而执行到 1 的位置就需要第二次加锁成功,但是由于第二次加锁导致了阻塞,这样就没有办法执行到 1 ,也就无法释放锁。我们可以约定加锁的顺序,避免循环等待,我们可以针对锁进行编号,比如加多把锁的时候,先加编号小的锁,再加编号大的锁(所有线程都遵守)当这个锁被某个线程占有的时候,其他线程尝试进行加锁,就加不上了,就会阻塞等待,一直等到之前的线程解锁之后,由操作系统唤醒一个新的线程,再来获取到这个锁。原创 2023-10-19 21:56:14 · 158 阅读 · 0 评论 -
【多线程】Thread类的基本用法
带你详细了解Thread类原创 2023-10-13 18:43:28 · 119 阅读 · 0 评论 -
【多线程】线程的状态
了解线程的状态、含义以及切换条件原创 2023-10-15 20:25:37 · 132 阅读 · 1 评论 -
进程调度的基本过程
这里的A和B看到的内存都是虚拟内存,比如A操作某个内存中的数据,就需要把操作的虚拟内存地址告诉系统,系统再把操作的虚拟地址翻译成物理地址(有一个类似于hash表这样的映射结构,称为”页表“)。(3)进程的上下文:进程从CPU离开之前,需要”保存现场“,把当前CPU中各种寄存器的状态都记录到内存中,等下次进程回到CPU上执行的时候,就可以把寄存器的值恢复回去,进程就会沿着上次执行到的位置继续向后执行。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。原创 2023-10-11 19:58:49 · 125 阅读 · 0 评论