标签:
看过很多关于线程的文章,但还是觉得需要说些什么。
我只想说使用线程池的时候,就不要自己写队列和循环等东西了。
代码如下:
1 public class SqlLogRecorder { 2 private static Logger logger = LoggerFactory.getLogger(SqlLogRecorder.class); 3 4 public SqlLogRecorder(MSConfigManager configManager){ 5 // 可以根据需要创建不同类型的连接池 6 workerPool = Executors.newFixedThreadPool(configManager.getSqlLogThreadCount()); 7 } 8 9 /** 10 * 将消息插入数据库 11 * @param messageObject 12 */ 13 public void insertMessageToDB(final MessageObject messageObject) { 14 workerPool.execute(new Runnable() { 15 @Override 16 public void run() { 17 if(logger.isDebugEnabled()) { 18 logger.debug(" insert message : "); 19 logger.debug(messageObject.toJsonString()); 20 } 21 // XXXX 需要做的工作 22 } 23 24 }); 25 } 26 27 28 public void close() { 29 workerPool.shutdown(); 30 } 31 }
当不需要是一定记得关闭
标签:
原文地址:http://www.cnblogs.com/sunzuoquan/p/5852338.html