本帖最后由 justin1258 于 2014-8-5 15:27 编辑
在c#里有一种BeginXXX的线程异步模型。比如看下面一段代码:- class Program
- {
- static void Main(string[] args)
- {
- // 服务端的监听套接字
- TcpListener listener = new TcpListener(new IPAddress(new byte[]{127,0,0,1}), 8080);
- // 开启异步监听,这里线程不会阻塞,当收到客户端连接后会回调ClientReceived方法
- listener.BeginAcceptTcpClient(ClientReceived, null);
- // 当前线程在收到客户端连接之前可以继续做其他的事。
- // ...
- }
- static void ClientReceived(IAsyncResult result)
- {
- // 当收到客户端连接后做的事
- }
- }
复制代码 服务端开启异步监听之后不会阻塞,这样的好处是当前线程不用空占着cpu时间不做事,而继续往下执行,提高了服务端的响应性,。至于收到客户端连接后某一个线程会自动执行我指定的ClientReceived方法。
上面的机制在处理IO操作的时候很有用处,但是我在看java 的时候并没有听到老师讲这方面的知识。请问有哪位大虾知道java里有类似的用法吗?
|
|