![](https://img-blog.csdnimg.cn/9e48c272604c486bacb4475c21f33f33.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java& Android 并发编程
Java &Android 关于并发编程
FishAnd_Yu
他说要 仗剑走天涯
展开
-
java(Android)并发编程(BlockQueue)
* 1: 线程安全 阻塞队列 BlockQueue* 1-1 同一时刻,出队或者入队 只能有一个线程在操作,这样保证了 出对和 入队的线程安全性* 1-2 但是同一时刻,可以有 分别执行出队和人对的操作的两个线程在操作,* 但是为了保证 当前队列的元素个数,使用 AtomicInterger 来确保底层的队列是线程安全的** 2: 主线程和 子线程之间的交互问题,保证数据的及时性* 2-2 CountDownLatch* 2.原创 2020-09-28 14:14:44 · 308 阅读 · 0 评论 -
java(Android)并发编程(wait notify synchronized)
1 : Obj.wait(),与Obj.notify() 和 synchronized 可以实现很好的线程同步模型框架** 2: Obj.wait(),与Obj.notify()必须要与synchronized(Obj)一起使用,也就是wait,与notify是针对已经获取了Obj锁进行操作,* 从语法角度来说就是Obj.wait(),Obj.notify必须在 synchronized(Obj){...}语句块内。* 从功能上来说wait就是说线程在获取对象锁后,主动释放对象锁...原创 2020-09-30 14:11:44 · 266 阅读 · 0 评论 -
并发编程系列之:线程池应用
开门见山:Java提供了4种线程池newCachedThreadPoolnewFixedThreadPoolnewSingleThreadExecutornewScheduleThreadPool你可以通过Executors来实例化这四种线程池。查看源码你还可以发现都是直接或者间接获取 ThreadPoolExecutor实例,只是实例化时传递的参数不一样,所以如果java提供的四种线程池满足不了实际需求,我们自定义线程池1:比如我们使用 newCachedThread.原创 2022-02-23 10:52:10 · 300 阅读 · 0 评论 -
并发编程系列: 线程之间互斥之原子类Atmoic类
1:Atomic指一个操作不可中断,即使在多线程情况下,一个操作一旦开始,就不会被其他线程干扰。如果多线程中仅需要Atomic原子类解决的事情,就不需要synchronized重量级锁了。2:AtomicInteger 类主要利用 CAS (compare and swap) + volatile 和 native 方法来保证原子操作,从而避免 synchronized 的高开销,执行效率大为提升。CAS的原理是拿期望的值和原本的一个值作比较,如果相同则更新成新的值。UnSafe 类的 object原创 2022-02-22 15:09:43 · 414 阅读 · 0 评论 -
并发编程系列:线程间的分工之 Future、Callable、Runnable
1: 在并发编程时,一般使用runnable,然后扔给线程池完事,这种情况下不需要线程的结果。所以使用Runnable 返回值是void类型。2::如果是一个多线程协作程序,比如菲波拉切数列,1,1,2,3,5,8…使用多线程来计算。但后者需要前者的结果,就需要用 Callable 接口了。3:线程是属于异步计算模型,所以你不可能直接从别的线程中得到函数返回值。这时候,Future就出场了。Futrue可以监视目标线程调用call的情况,当你调用Future的get()方法以获得结果时,...原创 2022-02-18 14:50:29 · 231 阅读 · 0 评论 -
并发编程系列:线程间的协作之 Exchanger
Exchanger1:Exchanger是适用在两个线程之间数据交换的并发工具类,它的作用是找到一个同步点,当两个线程都执行到了同步点(exchange方法)之后(有一个没有执行到就一直等待,也可以设置等待超时时间),就将自身线程的数据与对方交换2:线程可以在成对内配对和交换元素的同步点。每个线程在输入exchange方法时提供一些对象,与合作者线程匹配,并在返回时接收其合作伙伴的对象。交换器可以被视为一个的双向形式的SynchroniuzedQueue。交换器在诸如遗传算法和管道设计的应用中可能是原创 2022-02-18 14:10:06 · 246 阅读 · 0 评论 -
并发编程系列: 线程之间协作之 CountDownLatch和CyclicBarrier
CountdownLatch和CyclicBarrier的区别使用场景与具体实现 - 知乎CountdownLatch和CyclicBarrier都属于线程同步的工具,不过具体的实现以及使用的情况有所不同,我们先来看看不同的使用情况 CountdownLatch 使用场景顾名思义CountdownLatch可以当做一个计数器来使用,比如某线程需要…https://zhuanlan.zhihu.com/p/139020914一句话总结 1:CountDownLatch类似于10人找了一个代购,...原创 2022-02-18 13:46:40 · 198 阅读 · 0 评论 -
并发编程系列
原创 2022-02-18 13:23:11 · 192 阅读 · 0 评论