Java虚拟机中的线程控制

  1.对多线程的支持是Java语言的一大优势,Java对线程的控制主要集中在对线程的同步和协作上,Java使用的同步机制是监视器

  2.Java中的监视器支持两种线程,互斥和协作

     互斥通过对象锁实现,目的是保证不能同时有多个线程操作共享数据,对共享数据的操作语句放在监视器的监视区域中,线程只有获得对象锁才能够执行监视区域的操作。

     同步是共享数据的状态不满足线程正确执行的条件,线程需要执行Object的wait()方法,进入到对象的等待池中,直到另外一个线程修改共享数据的状态,使它满足等待线程的需求时,将等待线程唤醒,但是,如果唤醒线程没有执行完毕监视区域,或者没有调用wait()方法,它将继续执行,继续执行的过程中可能会再次修改共享数据的状态,因此,等待线程在再次进入监视区域之后要重新判断共享数据的状态是否符合要求。

     内存运行数据区的堆区和方法区是所有线程所共享的,因此对这些数据的访问需要进行线程的同步管理,对于局部变量,每个线程拥有自己的Java方法栈,其中保存了每一个方法的局部变量,局部变量的生命周期就是方法的生命周期,每个线程都有自己的局部变量,这些变量不是线程所共享的,对这些变量的操作无需进行互斥操作。

 

     2.1 JVM通过对象锁实现互斥,保证多个线程在同一个共享数据上独立而互不干扰地工作

     2.2 协作通过Object类的wait和notify方法实现,允许多个线程为同一个目标而共同奋斗

     2.3 监视器会关联一些代码:这些代

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值