• 【面向对象设计基础】监视器


    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

    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) {
             //
           }
       }
    }

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

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

  • 相关阅读:
    设计模式之_6大设计原则(转)
    Django-ORM多表操作(进阶)
    03-django模型(1)
    02-Django基础知识
    web开篇
    body标签中的相关标签
    01-前端初识
    Flask简述
    浅析设计模式
    Python的单例模式
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2822395.html
Copyright © 2020-2023  润新知