博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
主动对象
阅读量:4577 次
发布时间:2019-06-08

本文共 534 字,大约阅读时间需要 1 分钟。

主动对象

那么到底什么是主动对象呢?传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的。也就是,调用线程(calling threads)被“借出”,以执行被动对象的方法。
而主动对象却不一样。这些对象持有它们自己的线程(甚或多个线程),并将这个线程用于执行对它们的任何方法的调用。因而,如果你想象一个传统对象,在里面封装了一个线程(或多个线程),你就得到了一个主动对象。
例如,设想对象“A”已在你的程序的main()函数中被实例化。当你的程序启动时,OS创建一个线程,以从main()函数开始执行。如果你调用对象A的任何方法,该线程将“流过”那个方法,并执行其中的代码。一旦执行完成,该线程返回调用该方法的点并继续它的执行。但是,如果”A”是主动对象,事情就不是这样了。在这种情况下,主线程不会被主动对象借用。相反,当”A”的方法被调用时,方法的执行发生在主动对象持有的线程中。另一种思考方法:如果调用的是被动对象的方法(常规对象),调用会阻塞(同步的);而另一方面,如果调用的是主动对象的方法,调用不会阻塞(异步的)。

转载于:https://www.cnblogs.com/wangyonglong/p/5178479.html

你可能感兴趣的文章
input输入框file类型第二次不触发onchange事件的解决办法,简单有效
查看>>
搜索样式键盘的Return按钮是否可点击
查看>>
scrapy抓取中国新闻网新闻
查看>>
吴裕雄--天生自然 PHP开发学习:面向对象
查看>>
吴裕雄 python 神经网络——TensorFlow 输入数据处理框架
查看>>
[ckeditor系列]CKEditor 3.6 入门
查看>>
linux基础命令
查看>>
Socket网络编程--简单Web服务器(4)
查看>>
C++中函数模板的深入理解
查看>>
leecode第二十二题(括号生成)
查看>>
增量式PID的matlab实现
查看>>
mybatis generatorConfig.xml生成配置文件及三种运行方式
查看>>
poj 3264 Command Network(最小树形图)
查看>>
Ruby中的设计模式
查看>>
typedef在C和C++的区别?
查看>>
C#:文件创建、复制、移动、删除
查看>>
spring framework三个版本的下载包区别
查看>>
在同一页面中显示多个echart图表
查看>>
Android播放图片动画
查看>>
Unity时钟定时器插件——Vision Timer源码分析之一
查看>>