青岛理工大学理学院Java程序设计基础课件 第六讲(2).pptVIP

  • 0
  • 0
  • 约1.57千字
  • 约 12页
  • 2019-05-13 发布于广东
  • 举报

青岛理工大学理学院Java程序设计基础课件 第六讲(2).ppt

第12讲:多线程编程(2) 内容提要 多线程的同步 同步代码块 同步方法 线程间的通信 wait/notifyAll 多线程的同步 线程安全 同步代码块 同步方法 线程安全 当多个线程共享某数据资源时,就有可能发生不安全的情况。 例程 该程序的输出结果中竟有0号票,这是不对的。这是因为一个线程在if条件检查时当前票号还是正的,接下来该线程睡眠0.3秒,这期间另外一个线程可能已经继续卖票了,这时票号已减为0,0.3秒后该线程再继续卖票,这就是卖0号票了。 这种情况称为线程不是安全的,为了线程的安全性,Java引入了多线程的同步机制。同步方式有两种:同步代码块和同步方法。 同步代码块 该同步方式的语法如下: synchronized(lockObject){ 代码块... } 注意关键字synchronized后面有一个参数lockObject,其含义是同步代码块刚要执行时,先检查lockObject的锁(lock)是开的还是闭的(注意任何Java对象都有锁),若锁是开的,则线程首先把锁关闭,然后执行同步代码块中的所有语句,执行完毕后再把锁打开,若锁是闭的,则线程不执行同步代码块。由此可见,同步代码块的作用就是使代码块成为CPU执行的一个不可分隔的、最小颗粒度的原子操作。 注意,lockObject对象必须是在多个线程之间共享的,即多线程的同步靠的是检查同一个对象的锁状态。

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档