![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 92
胡歌的小迷弟
这个作者很懒,什么都没留下…
展开
-
FutureTask
1.概念一个可以取消的异步计算,当前线程都会阻塞在get阻塞,直到任务执行完毕,返回结果。2.类图3.源码分析3.1 参数分析 //表示当前task状态 private volatile int state; //当前任务尚未执行 private static final int NEW = 0; //当前任务正在结束,稍后完全结束,一种临界状态 private static final int COMPLETING = 1;原创 2020-05-22 08:58:20 · 124 阅读 · 0 评论 -
Synchronized
synchronized的三种应用方式修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁作用解决原子性,可见性,指令重排序问题。java对象头和Monitor在jvm中,java在内存中的布局分为对象头,实列...原创 2020-04-16 16:44:21 · 144 阅读 · 0 评论 -
java锁
java锁结构图1 乐观锁VS悲观锁乐观锁:乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断在此期间有没有其他线程去更新这个数据,采取在写时先独处当前的版本号,然后加锁操作,java中的乐观锁都是通过CAS操作实现的,CAS是一种更新的原子操作。悲观锁:悲观锁是就是悲观思想,即认为写多,遇到并发写的可...原创 2020-04-16 12:07:06 · 174 阅读 · 0 评论 -
并发编程
如何使用多线程在java中,可以通过继承Thread类,实现Runnable接口,使用Callable,Future实现带返回值的多线程,还可以使用ExecutorService线程池来实现。线程的状态线程一共有6种状态:new ,runnable,blocked,waiting,time_waiting,terminated.NEW:初始状态,线程被构建,但是还没有调用start方法R...原创 2020-03-18 15:40:12 · 142 阅读 · 0 评论