
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
多线程编程开发在许多Java编程开发项目中都是被广泛使用的一种编程开发方式,而本文我们就通过案例分析来简单了解一下,多线程编程实现问题与解决方法。
在Java领域中,同步器是专门为多线程并发设计的同步机制,主要是多线程并发执行时线程之间通过某种共享状态来实现同步,只有当状态满足这种条件时线程才往下执行的一种同步机制。
对于多线程实现实现并发处理机制来说,一直以来,多线程都存在2个问题:
线程之间内存共享,需要通过加锁进行控制,但是加锁会导致性能下降,同时复杂的加锁机制也会增加编程编码难度
过多线程造成线程之间的上下文切换,导致效率低下
因此,在并发编程领域中,一直有一个很重要的设计原则:“不要通过内存共享来实现通信,而应该通过通信来实现内存共享。”
简单来说,就是尽可能通过消息通信,而不是内存共享来实现进程或者线程之间的同步。
其中,同步器是专门为多线程并发设计的同步机制,主要是多线程并发执行时线程之间通过某种共享状态来实现同步,只有当状态满足这种条件时线程才往下执行的一种同步机制。
由于在不同的应用场景中,对于同步器的需求也会有所不同,一般在我们自己去实现和设计一种并发工具的时候,都需会考虑以下几个问题:
是否支持响应中断?如果阻塞状态的线程能够响应中断信号,也就是说当我们给阻塞的线程发送中断信号的时候,能够唤醒它,那它就有机会释放曾经持有的锁。
是否支持超时?如果线程在一段时间之内没有获取到锁,不是进入阻塞状态,而是返回一个错误,那这个线程也有机会释放曾经持有的锁。
是否支持非阻塞地获取锁资源?如果尝试获取锁失败,并不进入阻塞状态,而是直接返回,那这个线程也有机会释放曾经持有的锁。
从阅读JDK源码不难发现,主要是采用设计模式中模板模式的原则,JDK将各种同步器中相同的部分抽象封装成了一个统一的基础同步器,然后基于基础同步器为模板通过继承的方式来实现不同的同步器。
也就是说,在实际开发过程中,除了直接使用JDK实现的同步器,还可以基于这个基础同步器我们也可以自己自定义实现符合我们业务需求的同步器。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。