zoukankan      html  css  js  c++  java
  • 一个日志服务器的框架

    package thread;

    import java.io.FileNotFoundException;
    import java.io.PrintWriter;
    import java.util.concurrent.BlockingQueue;
    import java.util.concurrent.LinkedBlockingDeque;
    /**
    * 一个日志服务的框架
    * @author Administrator
    *
    */

    public class LoggerWriter {
    private final BlockingQueue<String>queue;
    private final LoggerThread loggerThread;

    private final PrintWriter writer;
    private boolean isShutdown;
    private int reservations;
    public LoggerWriter() throws FileNotFoundException{
       queue=new LinkedBlockingDeque<String>();
       loggerThread=new LoggerThread();
       writer=new PrintWriter("");
    }

    public void start(){
       loggerThread.start();
    }
    public void stop(){
       synchronized (this) {
        isShutdown=true;
       }
       loggerThread.interrupt();
    }
    public void log(String msg) throws InterruptedException{
       synchronized (this) {
        if(isShutdown)
         throw new IllegalStateException();
        ++reservations;
       }
       queue.put(msg);
    }

    private class LoggerThread extends Thread{
       public void run(){
       
        try {
         while (true) {
          try {
           synchronized (LoggerWriter.this) {
            if(isShutdown&&reservations==0)
             break;
           }
           String msg=queue.take();
           synchronized (LoggerWriter.this) {
            --reservations;
           }
           writer.print(msg);
          } catch (InterruptedException e) {
          
          }
         }
        } finally{
         writer.close();
        }
       
       }
      
    }
    }

  • 相关阅读:
    使用Nginx搭建http服务器
    (七)Docker搭建httpd集群
    zlib库对文件进行压缩和解压操作
    (一)Apache Thrift 的使用
    (一)select、poll、epoll
    (十三)备忘录模式
    (十二)命令模式
    (十一)迭代器模式
    centos下利用httpd搭建http服务器方法
    shell快捷键
  • 原文地址:https://www.cnblogs.com/macula7/p/1960463.html
Copyright © 2011-2022 走看看