黑马程序员技术交流社区

标题: 请问java里有类似c#线程异步模型吗?在那个包里?怎么用? [打印本页]

作者: justin1258    时间: 2014-8-5 10:04
标题: 请问java里有类似c#线程异步模型吗?在那个包里?怎么用?
本帖最后由 justin1258 于 2014-8-5 15:27 编辑

在c#里有一种BeginXXX的线程异步模型。比如看下面一段代码:
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             // 服务端的监听套接字
  6.             TcpListener listener = new TcpListener(new IPAddress(new byte[]{127,0,0,1}), 8080);

  7.             // 开启异步监听,这里线程不会阻塞,当收到客户端连接后会回调ClientReceived方法
  8.             listener.BeginAcceptTcpClient(ClientReceived, null);

  9.             // 当前线程在收到客户端连接之前可以继续做其他的事。
  10.             // ...
  11.         }

  12.         static void ClientReceived(IAsyncResult result)
  13.         {
  14.             // 当收到客户端连接后做的事
  15.         }
  16.     }
复制代码
服务端开启异步监听之后不会阻塞,这样的好处是当前线程不用空占着cpu时间不做事,而继续往下执行,提高了服务端的响应性,。至于收到客户端连接后某一个线程会自动执行我指定的ClientReceived方法。
上面的机制在处理IO操作的时候很有用处,但是我在看java 的时候并没有听到老师讲这方面的知识。请问有哪位大虾知道java里有类似的用法吗?



作者: fantacyleo    时间: 2014-8-5 10:21
http://andinker.iteye.com/blog/1582222




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2