1、多线程资源竞争
先创建资源类,并给线程加锁,推荐使用reatrantlock,然后写业务,
加锁了说明肯定要有执行条件,例如抢到锁还要判断库存必须大于0,
否则线程等待await,然后执行业务,最后创建多个线程调用抢资源执行资源类
2、线程虚假唤醒
线程续假唤醒就是线程等待的时候会在原地方唤醒,导致再次唤醒后的线程不在睡眠前的判断范围内,所以我们的线程唤醒之后需要再执行一次判断
3、vue父子组件调用小插曲
4、synchronized
1、synchronized修饰普通方法锁当前对象实例
2、修饰类中的静态方法,锁当前class类对象
5、公平锁和非公平锁
公平锁在多线程情况下线程会均匀使用,非公平锁可能一个线程把所有的活干完,其他线程空闲,但是非公平锁效率高
6、可重入锁
同一把锁,一个线程拿到这个锁后其内部代码中的新建线程再去拿这把锁是可以无障碍拿到的,lock是显式的必须手动上锁解锁,synchnized是隐式的会自动上锁解锁
7、pgsql小插曲(ROW_NUMBER() OVER(PARTITION by a ORDER BY b desc))
ROW_NUMBER() OVER(PARTITION by a ORDER BY b desc) as id 按a字段分组b字段排序,并且生成一个拍好顺序的id,通过拿这个分组内的第一个id拿到最大值
8、futrueTask
runnable接口实现类有futrueTask,
futrueTask的构造方法的参数包括callable,所以才可以通过futrueTask将callable和线程关键起来
9、随笔
一枚别秋雪
飘出世道的苍白
目及燕云的凄切
依然融落州下寨
执笔望明月
落诗词中江南
再见无生感
渲染她一面体贴
你沉浮摇曳
光都会折断
它粉饰自己
不容人偏僻入里
残编断简有说服力
不过复礼