你的位置:首页 > ASP.net教程

[ASP.net教程]Sigleton 单例模式 的简单应用


需求:一个简单的后台java程序,收集信息,并将信息发送到远端服务器。

实现:实现一个后台线程,实时处理发送过来的信息,并将信息发送到服务器。

技术要点:

1、单例模式

2、队列

并没有实现全部代码,简单把技术要点写出来:

import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;/** * Created by Edward on 2016/6/28. */public class Singleton {  private volatile static Singleton singleton = null;  //队列  private BlockingQueue queue = new LinkedBlockingQueue();  private Singleton()  {  }  private static Singleton getInstance(){    //double check    if(singleton == null)      synchronized (Singleton.class){        if(singleton == null) {          singleton = new Singleton();          //create a thread          Thread thread = new Thread(new Runnable() {            public void run() {              singleton.getInfo();            }          });          thread.start();        }      }    return singleton;  }  public void getInfo() {    String str = null;    while(true) {      try {        //get info from queue        str = this.queue.take().toString();        this.sendMsg(str);      } catch (InterruptedException e) {        e.printStackTrace();      }    }  }  //向服务端发送数据  public void sendMsg(String msg){    System.out.println(msg);  }  public void putInfo(String string)  {    //put info to queue    getInstance().queue.add(string);  }  public static void main(String[] args)  {    for(int i=0; i<100;i++) {      Singleton.getInstance().putInfo("info:" + i);      try {        Thread.sleep(1000);      } catch (InterruptedException e) {        e.printStackTrace();      }    }  }}


此程序只是做信息收集,并为后期数据统计做准备,通过单线程队列实现,避免申请过多的资源,影响原有业务的性能。