栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多线程(狂神说java)学习日记4

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多线程(狂神说java)学习日记4

关于synchronized

同步方法:当它锁的是一个方法的时候,当第一个线程调用该方法时候,锁住,这样第二个线程必须等第一个线程调用完后(也就是该方法return后),才能再调用。

同步块:注意监视的对象是需要增删改查的对象

第一个线程访问,锁定同步监视器,执行其中代码
第二个线程访问,发现同步监视器被锁定,无法访问
第一个线程访问完毕,解除同步监视器
第二个线程访问,发现同步监视器没有锁,执行其中代码

P22 死锁

某一个同步块同时有两个以上对象的锁,就可能出现死锁

通俗来讲,两个线程都在等待对方释放资源,例如线程A拥有资源a,B拥有b,线程A想要资源b,而B想要a,这个时候AB都在等待对方先释放资源,然后就会停止执行。

产生死锁的四个必要条件:
1.互斥条件:一个资源每次只能被一个进程使用。
2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

女1线程,先获得口红,3秒后想获得镜子,女2线程,先获得镜子,2秒后想获得口红。这里的2秒3秒保证了两个线程都先获得一个基本资源,女1:口红;女2:镜子,后面就开始想获取对方的资源,然后就会卡死

解除方法,把同步块拿出来,不同时获得两把锁

P23 lock锁

不加锁

加锁(解除注释)

P27线程池

比较简单的创建方式:

TimeUnit时间单位

ThreadFactory 用来增加线程

当任务进来

先看核心线程是否满

     1,没满开始执行;2,满了就看任务队列

再看任务队列

  1. 没满添加到队列中;2,满了看最大线程

看最大线程

     1,没满,增加线程数来执行任务;2,满了,看拒绝策略

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996636.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号