All pastes #24314 Raw Edit

Mine

public java v1 · immutable
#24314 ·published 2005-09-30 16:59 UTC
rendered paste body
package net.sf.l2j.loglistener;import java.util.ArrayList;import java.util.logging.Logger;import net.sf.l2j.gameserver.ClientScheduler;public class LogServer{    protected static Logger _log = Logger.getLogger(LogServer.class.getName());    public static LogServer _instance = new LogServer();        private LogServer()    {        _events = new ArrayList<String>();        ClientScheduler.getInstance().scheduleLowAtFixedRate(new flushTask(),10000,30000);    }        public static LogServer getInstance()    {        return _instance;    }        public synchronized void addEvent(String event)    {        _events.add(event);    }        private void flushEvents()    {        ArrayList<String> _tmpEvents =  null;        try        {            _log.info("Flushing log events, size: " + _events.size()); // tis should be remved from release, to avoid perf. penalty                        // lock _events, copy to tmp array, clear & release            // then we can run long-running task(like flushing tmp array to disk)            synchronized(_events)            {                _tmpEvents = new ArrayList<String>(_events);                _events.clear();            }        }        catch(Exception e)        {            _log.warning("Exception while flushing log events: " + e.getStackTrace());        }        finally        {            _log.info("Final size: "+_tmpEvents.size());            for(String event : _tmpEvents)            {                _log.info("[Flushed event]: "+event);            }        }    }        class flushTask implements Runnable    {        public void run()        {            flushEvents();        }    }        protected static ArrayList<String> _events;}