线程进程安全概述(PPT 44页).pptVIP

  • 3
  • 0
  • 约6.51千字
  • 约 44页
  • 2019-09-18 发布于甘肃
  • 举报
不同语言中,同步代码段的实现模型类似,只是表达方式有些不同。这里以Java语言为例,在Java语言中,synchronized关键字可以解决这个问题,整个语法形式表现为: 注意,synchronized后的“同步锁对象”,必须是可以被各个线程共享的,如this、某个全局标量等。不能是一个局部变量。 其原理为:当某一线程运行同步代码段时,在“同步锁对象”上置一标记,运行完这段代码,标记消除。其他线程要想抢占CPU运行这段代码,必须在“同步锁对象”上先检查该标记,只有标记处于消除状态,才能抢占CPU。在上面的例子中,this是一个“同步锁对象”。 synchronized(同步锁对象) { // 访问共享资源,需要同步的代码段 } * 因此,在上面的案例中,可以将将卖票的代码用synchronized代码块包围起来,“同步锁对象”取this。 如代码P03_05.java所示。 运行,可以得到如下效果。 * 这说明程序运行完全正常。 从以上代码可以看出,该方法的本质是将需要独占CPU的代码用synchronized(this)包围起来。如前所述,一个线程进入这段代码之后,就在this上加了一个标记,直到该线程将这段代码运行完毕,才释放这个标记。如果其他线程想要抢占CPU,先要检查this上是否有这个标记。若有,就必须等待。 但是可以看出,该代码实际上运

文档评论(0)

1亿VIP精品文档

相关文档