知识大全 Java线程模型缺陷研究[2]
Posted 知
篇首语:人生难得几回搏,此时不搏待何时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java线程模型缺陷研究[2]相关的知识,希望对你有一定的参考价值。
Java线程模型缺陷研究[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
task(任务)的概念
Java 线程模型的根本问题是它完全不是面向对象的 面向对象 (OO) 设计人员根本不按线程角度考虑问题 他们考虑的是同步 信息 异步 信息(同步信息被立即处理 直到信息处理完成才返回消息句柄 异步信息收到后将在后台处理一段时间 而早在信息处理结束前就返回消息句柄) Java 编程语言中的 Toolkit getImage() 方法就是异步信息的一个好例子 getImage() 的消息句柄将被立即返回 而不必等到整个图像被后台线程取回
这是面向对象 (OO) 的处理方法 但是 如前所述 Java 的线程模型是非面向对象的 一个 Java 编程语言线程实际上只是一个run() 过程 它调用了其它的过程 在这里就根本没有对象 异步或同步信息以及其它概念
对于此问题 在我的书中深入讨论过的一个解决方法是 使用一个Active_object active 对象是可以接收异步请求的对象 它在接收到请求后的一段时间内以后台方式得以处理 在 Java 编程语言中 一个请求可被封装在一个对象中 例如 你可以把一个通过 Runnable 接口实现的实例传送给此 active 对象 该接口的 run() 方法封装了需要完成的工作 该 runnable 对象被此 active 对象排入到队列中 当轮到它执行时 active 对象使用一个后台线程来执行它
在一个 active 对象上运行的异步信息实际上是同步的 因为它们被一个单一的服务线程按顺序从队列中取出并执行 因此 使用一个 active 对象以一种更为过程化的模型可以消除大多数的同步问题
在某种意义上 Java 编程语言的整个 Swing/AWT 子系统是一个 active 对象 向一个 Swing 队列传送一条讯息的唯一安全的途径是 调用一个类似SwingUtilities invokeLater() 的方法 这样就在 Swing 事件队列上发送了一个 runnable 对象 当轮到它执行时 Swing 事件处理线程将会处理它
那么我的第一个建议是 向 Java 编程语言中加入一个task (任务)的概念 从而将active 对象集成到语言中 ( task的概念是从 Intel 的 RMX 操作系统和 Ada 编程语言借鉴过来的 大多数实时操作系统都支持类似的概念 )
一个任务有一个内置的 active 对象分发程序 并自动管理那些处理异步信息的全部机制
定义一个任务和定义一个类基本相同 不同的只是需要在任务的方法前加一个asynchronous 修饰符来指示 active 对象的分配程序在后台处理这些方法
所有的写请求都用一个dispatch() 过程调用被放在 active object 的输入队列中排队 在后台处理这些异步信息时出现的任何异常 (exception) 都由 Exception_handler 对象处理 此 Exception_handler 对象被传送到 File_io_task 的构造函数中
这种基于类的处理方法 其主要问题是太复杂了 对于一个这样简单的操作 代码太杂了
cha138/Article/program/Java/gj/201311/27691相关参考
Java线程模型缺陷研究[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程模型缺陷研究[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程模型缺陷研究[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程模型缺陷研究[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程模型缺陷研究[7] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程/内存模型的缺陷和增强 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java在语言
Java语言深入多线程程序模型研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多线程是较复杂
基于Java2运行时安全模型的线程协作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Java
在Java平台上进行多线程编程的缺陷[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 争用条
Java线程缺陷和副作用的解决办法(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 表A:演