课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而今天我们就一起来了解一下,零基础如何学习java并发编程。
1.什么是管程?
指的是对共享变量和对共享变量的操作的管理,使其支持并发,对应到Java,指的是管理类的成员变量和方法,让这个类是线程安全的。
2.管程模型
管程主要的模型有Hasen、Hoare、MESA,其中MESA常用。管程的MESA模型主要解决的是线程的互斥和同步问题,和上面说到的等待-通知机制十分类似。
先看看管程是如何实现互斥的?在管程的入口有一个等待队列,一次只允许一个线程进入管程。每个条件对应一个等待队列,当线程不满足条件的时候,进入对应的等待队列;当条件满足的时候,队列中的线程被唤醒,重新进入到入口处的等待队列获取互斥锁,这就实现了线程的同步问题。
3.线程状态转换
RUNNABLE与BLOCKED状态的转换:在线程等待synchronized的锁时,会进入BLOCKED状态,当获取到锁之后,又转换到RUNNABLE状态。
RUNNABLE与WAITING状态的转换:1)线程获取到synchronized锁之后,并且调用了wait()方法。2)调用Thread.join()方法,例如线程A调用join()方法,线程B等待A执行完毕,等待期间B进入WAITING状态,线程A执行完后,线程B切换到RUNNABLE状态。3)调用LockSupport.park()方法
RUNNABLE与TIMED_WAITING状态的转换:以上三种情况,分别在方法中加上超时参数即可。另外还有两种情况:Thread.sleep(longmillis)方法,LockSupprt.parkNanos(Objectblocker,longdeadline)。
NEW到RUNNABLE状态的转换:在Java中新创建的线程,会立即进入NEW状态,然后启动线程进入RUNNABLE状态。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。