博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【面向对象设计基础】监视器
阅读量:4947 次
发布时间:2019-06-11

本文共 608 字,大约阅读时间需要 2 分钟。

作者:

出处:

1)使用场景:一个对象可能要访问共享资源来完成它所要提供的服务,在多线程情况下,多个这样的对象在一起就会产生意想不到的后果,比如竞争。监视器就是在这样的一个对象上设置一个锁,以保证在给定时间内,只有一个线程可以执行这个对象上的任何一个方法。

2)例子:我们创建一个日志记录的类

public class FileLogger {

    public synchronized void log(String msg) {
       DataOutputStream dos = null;
       try {
             dos = new DataOutputStream(
             new FileOutputStream("log.txt”,true));
             dos.writeBytes(msg);
             dos.close();
       } catch (FileNotFoundException ex) {
             //
          }
       catch (IOException ex) {
         //
       }
   }
}

当一个线程执行到一个对象的同步方法时,它就得到这个对象的一个锁,在这个方法执行时这个线程就持有这个锁知道方法运行结束,期间其他线程无法拿到这个锁,也就无法执行这个方法了。当然同步方法是以运行速度开销作为代价的。

 

作者:

出处:

转载于:https://www.cnblogs.com/gnuhpc/archive/2012/12/17/2822395.html

你可能感兴趣的文章
JS获取农历日期
查看>>
PHP中的HTTP协议
查看>>
Java WebService入门实例
查看>>
css样式之补充
查看>>
结构与联合
查看>>
BUPT复试专题—众数(2014)
查看>>
20145316 《信息安全系统设计基础》第十四周学习总结
查看>>
Liferay7 BPM门户开发之18: 理解ServiceContext
查看>>
Intel Galileo development documentation
查看>>
EV: Workaround to Allow Only One Instance or Window of outlook
查看>>
数据校验,
查看>>
IntelliJ IDEA完美解决tomcat8+乱码问题
查看>>
破解电信光猫华为HG8120C关闭路由功能方法
查看>>
在Qt示例项目的C ++ / QML源中的//! [0]的含义是什么?
查看>>
【智能家居篇】wifi网络接入原理(上)——扫描Scanning
查看>>
操作引入xml文件的书包(定位到指定节点)
查看>>
操作系统学习笔记系列(一)- 导论
查看>>
CSS实例:图片导航块
查看>>
window的对象有哪些(笔记)
查看>>
Boolean Expressions
查看>>