Java的多线程同步机制的主要原则

概括起来说,Java 多线程同步机制主要包含如下几点:

  1:如果一个类包含一个或几个同步方法,那么由此类生成的每一个对象都配备一个队列用来容纳那些等待执行同步的线程。

  2:对于一个线程来说,有两种途径会使其进入等待队列,一种是在其他线程调用含有同步方法的对象时,此线程正在调用这个对象的方法,另一种方法是此线程调用了 wait() 方法。

  3:当一个线程从一个同步方法调用返回时,或者调用 wait() 方法时,其他线程就可以访问此对象。

  4:作为总的原则,系统总是使队列中拥有最高级优先级的线程获得运行机会。

  5:如果一个线程由于调用 wait()  方法而进入等待队列,那么,它必须由别的线程通过调用notify()  方法来唤醒它,才能安排它重新执行。

      不可否认,上面列出的几个原则有些繁杂,但在实际处理中其实很简单,只要按照下列三条规则就可以了。

   一:如果两个或多个线程修改一个对象,那么将执行修改操作的方法用关键字 synchronized  定义为同步方法。

   二:如果一个线程必须等待某个对象的状态被改变,那么,此线程应在对象队列中等待,这种等待是通过进入同步方法或者调用wait()  方法来实现的。

   三:每当一个方法修改了某个对象的状态的时候,这个方法就应该再调用 notify() 方法,这样给那些处于等待队列中的线程一个机会,使其能够检测环境是否已经发生了改变,从而可使其重新运行。

 

另补:同步机制的特点和功能是很突出的,但是他并不能解决多线程系统中的全部问题,特别是死锁问题,比如

         银行系统是的进入帐户问题。当一个程序在运行的时候出现了死锁,Java 系统是无能无力的。所以,用户

         自己设计线程的时候,要确保不出现死锁。同步问题和死锁的避免问题是有相当难度的课题哟。得花时间

        好好学学。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值