课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
高可用性的开发需求是随着互联网的不断发展而被提出的一个开发需求,而今天我们就一起来了解一下,java编程高可用性开发实现方法。
1、并发工具类
CountDownLatch
CountDownLatch的作用是让一些线程阻塞直到另外一些线程完成一系列操作后才被唤醒。
CountDownLatch在初始时设置一个数值,当一个或者多个线程使用await()方法时,这些线程会被阻塞。其余线程调用countDown()方法,将计数器减去1,当计数器为0时,调用await()方法被阻塞的线程会被唤醒,继续执行。
可以理解为,等大家都走了,保安锁门。
CyclicBarrier
CyclicBarrier是指可以循环使用的屏障,让一组线程到达一个屏障时被阻塞,直到后一个线程到达屏障,屏障才会开门,被屏障拦截的线程才会继续工作,线程进入屏障通过await()方法。
可以理解为,大家都到齐了,才能开会。
Semaphore
信号量用于:
多个共享资源的互斥使用
2、并发线程数的控制
可以理解为,多个车抢停车场的多个车位。当进入车位时,调用acquire()方法占用资源。当离开时,调用release()方法释放资源。
3、阻塞队列
阻塞队列先是一个队列,所起的作用如下:
当阻塞队列为空,从队列中获取元素的操作将会被阻塞
当阻塞队列为满,向队列中添加元素的操作将会被阻塞
试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他线程向空的队列中插入新的元素。同样的,试图向已满的阻塞队列中添加新元素的线程同样会被阻塞,直到其他线程从队列中移除元素使得队列重新变得空闲起来并后序新增。
阻塞:阻塞是指在某些情况下会挂起线程,即阻塞,一旦条件满足,被挂起的线程又会自动被唤醒。
优点:BlockingQueue能帮助我们进行线程的阻塞和唤醒,而无需关心何时需要阻塞线程,何时需要唤醒线程。同时兼顾了效率和线程安全。
4、阻塞队列的架构
BlokcingQueue接口实现了Queue接口,该接口有如下的实现类:
ArrayBlockingQueue:由数组组成的有界阻塞队列
LinkedBlockingQueue:由链表组成的有界阻塞队列(默认大小为Integer.MAX_VALUE)
PriorityBlockingQueue:支持优先级排序的无界阻塞队列
DelayQueue:使用优先级队列实现的延迟无界阻塞队列
SynchronousQueue:不存储元素的阻塞队列,单个元素的队列,同步提交队列
LinkedTransferQueue:链表组成的无界阻塞队列
LinkedBlockingDeque:链表组成的双向阻塞队列
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。