文件名称:异步设计-嵌入式qt开发项目教程
文件大小:4.2MB
文件格式:PDF
更新时间:2024-06-29 05:59:10
Netty NIO
1.2 异步设计 整个 Netty 的 API 都是异步的,异步处理不是一个新的机制,这个机制出来已经有一些时间了。对网络应用 来说,IO 一般是性能的瓶颈,使用异步 IO 可以较大程度上提高程序性能,因为异步变的越来越重要。但是它是如 何工作的呢?以及有哪些不同的模式可用呢? 异步处理提倡更有效的使用资源,它允许你创建一个任务,当有事件发生时将获得通知并等待事件完成。这 样就不会阻塞,不管事件完成与否都会及时返回,资源利用率更高,程序可以利用剩余的资源做一些其他的事情。 本节将说明一起工作或实现异步 API 的两个 常用的方法,并讨论这些技术之间的差异。 1.2.1 Callbacks(回调 ) 回调一般是异步处理的一种技术。一个回调是被传递到并且执行完该方法。你可能认为这种模式来自 JavaScript,在 Javascript 中,回调是它的核心。下面的代码显示了如何使用这种技术来获取数据。下面代码是一 个简单的回调 [java] view plaincopy 1. package netty.in.action; 2. 3. public class Worker { 4. 5. public void doWork() { 6. Fetcher fetcher = new MyFetcher(new Data(1, 0)); 7. fetcher.fetchData(new FetcherCallback() { 8. @Override 9. public void onError(Throwable cause) { 10. System.out.println("An error accour: " + cause.getMessage()); 11. } 12. 13. @Override 14. public void onData(Data data) { 15. System.out.println("Data received: " + data); 16. } 17. }); 18. }