1. 程式人生 > >單例實現

單例實現

 
public class WSServer {

	private static class SingletionWSServer {
                /* 
                static修飾的變數是類變數,物件例項化之前就存在的變數,
                不管例項化多少個物件,始終就只有這一個類變數。
                而沒有用static修飾的變數是物件的變數,
                每例項化一個物件時就產生一個VALUE_1這個變數。
                雖然感覺上他們的值是一樣的,但是在記憶體中的儲存是不一樣的,
                通常final 物件都加static修飾符,以節省記憶體。
                */
		static final WSServer instance = new WSServer();
	}
	
	public static WSServer getInstance() {
		return SingletionWSServer.instance;
	}
	
	private EventLoopGroup mainGroup;
	private EventLoopGroup subGroup;
	private ServerBootstrap server;
	private ChannelFuture future;
	
	public WSServer() {
		mainGroup = new NioEventLoopGroup();
		subGroup = new NioEventLoopGroup();
		server = new ServerBootstrap();
		server.group(mainGroup, subGroup)
			.channel(NioServerSocketChannel.class)
			.childHandler(new WSServerInitialzer());
	}
	
	public void start() {
		this.future = server.bind(8088);
                // err顯示一個紅色的字
		System.err.println("netty websocket server 啟動完畢...");
	}
}
物件引用就好比大轉盤的指標,指向的物件,就好比指標指向的格子。被final定義的物件引用,就好比只能轉一次的指標,它永遠指向這一個格子