知识大全 Java线程模型缺陷研究[5]
Posted 知
篇首语:路曼曼其修远兮,吾将上下而求索。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java线程模型缺陷研究[5]相关的知识,希望对你有一定的参考价值。
Java线程模型缺陷研究[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
现有的覆蓋(override)Thread 对象并实现 run() 的习惯继续有效 但是它应映射到一个被绑定到一轻便进程的绿色线程 (在 Thread() 类中的缺省 run() 方法会在内部有效地创建第二个 Runnable 对象 )
线程间的协作
应在语言中加入更多的功能以支持线程间的相互通信 目前 PipedInputStream 和 PipedOutputStream 类可用于这个目的 但是对于大多数应用程序 它们太弱了 我建议向 Thread 类加入下列函数 增加一个 wait_for_start() 方法 它通常处于阻塞状态 直到一个线程的 run() 方法启动 (如果等待的线程在调用 run 之前被释放 这没有什么问题) 用这种方法 一个线程可以创建一个或多个辅助线程 并保证在创建线程继续执行操作之前 这些辅助线程会处于运行状态 (向 Object 类)增加 $send (Object o) 和 Object=$receive() 方法 它们将使用一个内部阻断队列在线程之间传送对象 阻断队列应作为第一个 $send() 调用的副产品被自动创建 $send() 调用会把对象加入队列 $receive() 调用通常处于阻塞状态 直到有一个对象被加入队列 然后它返回此对象 这种方法中的变量应支持设定入队和出队的操作超时能力 $send (Object o long timeout) 和 $receive (long timeout)
对于读写锁的内部支持
读写锁的概念应内置到 Java 编程语言中 读写器锁在 Taming Java Threads (和其它地方)中有详细讨论 概括地说 一个读写锁支持多个线程同时访问一个对象 但是在同一时刻只有一个线程可以修改此对象 并且在访问进行时不能修改
对于一个对象 应该只有在$writing 块中没有线程时 才支持多个线程进入 $reading 块 在进行读操作时 一个试图进入 $writing 块的线程会被阻断 直到读线程退出 $reading 块 当有其它线程处于 $writing 块时 试图进入 $reading 或 $writing 块的线程会被阻断 直到此写线程退出 $writing 块
如果读和写线程都在等待 缺省情况下 读线程会首先进行 但是 可以使用$writer_priority 属性修改类的定义来改变这种缺省方式
访问部分创建的对象应是非法的
当前情况下 JLS 允许访问部分创建的对象 例如 在一个构造函数中创建的线程可以访问正被创建的对象 既使此对象没有完全被创建
设置x 为 的线程可以和设置 x 为 的线程同时进行 所以 此时 x 的值无法预测
对此问题的一个解决方法是 在构造函数没有返回之前 对于在此构造函数中创建的线程 既使它的优先级比调用new 的线程高 也要禁止运行它的 run() 方法
这就是说 在构造函数返回之前 start() 请求必须被推迟
另外 Java 编程语言应可允许构造函数的同步 换句话说 下面的代码(在当前情况下是非法的)会象预期的那样工作
我认为第一种方法比第二种更简洁 但实现起来更为困难
volatile关键字应象预期的那样工作
JLS 要求保留对于 volatile 操作的请求 大多数 Java 虚拟机都简单地忽略了这部分内容 这是不应该的 在多处理器的情况下 许多主机都出现了这种问题 但是它本应由 JLS 加以解决的 如果您对这方面感兴趣 马里兰大学的 Bill Pugh 正在致力于这项工作(请参阅参考资料 )
cha138/Article/program/Java/gj/201311/27694相关参考
Java线程模型缺陷研究[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程模型缺陷研究[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程模型缺陷研究[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程模型缺陷研究[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程模型缺陷研究[7] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程/内存模型的缺陷和增强 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java在语言
Java语言深入多线程程序模型研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多线程是较复杂
Java线程模型如何完善相关的数据处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java线
基于Java2运行时安全模型的线程协作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Java
JavaSocket多线程如何支持服务器模型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Ja