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();
        }
       
       }
      
    }
    }

  • 相关阅读:
    JSON--List集合转换成JSON对象
    某些项目因位于工作空间目录中而被隐藏
    Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
    SQLSERVER2008 18456错误
    android捕获ListView中每个item点击事件
    Android中Toast的用法简介
    android ListView详解
    Android调试工具及方法
    免费卫星图像下载网站
    ArcScene三维制作
  • 原文地址:https://www.cnblogs.com/macula7/p/1960463.html
Copyright © 2011-2022 走看看