知识大全 Java线程模型如何完善相关的数据处理

Posted

篇首语:千淘万漉虽辛苦,吹尽狂沙始到金。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java线程模型如何完善相关的数据处理相关的知识,希望对你有一定的参考价值。

Java线程模型如何完善相关的数据处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Java线程模型在使用耳朵时候需要大家不断的进行学习 下面我们就看看如何才能更好的掌握相关的技术语言 判断是抢占式还是协作式的Java线程模型 取决于虚拟机的实现者 并根据各种实现而不同 因此 Java开发员必须编写那些能够在两种模型上工作的程序

  正如前面所提到的 在抢占式模型中线程可以在代码的任何一个部分的中间被打断 除非那是一个原子操作代码块 原子操作代码块中的代码段一旦开始执行 就要在该线程被换出处理器之前执行完毕 在 Java 编程中 分配一个小于 位的变量空间是一种原子操作 而此外象double和long这两个 位数据类型的分配就不是原子的 使用锁来正确同步共享资源的访问 就足以保证一个多线程程序在抢占式模型下正确工作

  而在协作式模型中 是否能保证线程正常放弃处理器 不掠夺其他线程的执行时间 则完全取决于程序员 调用yield()方法能够将当前的线程从处理器中移出到准备就绪队列中 另一个方法则是调用sleep() 方法 使Java线程模型放弃处理器 并且在 sleep 方法中指定的时间间隔内睡眠

  正如你所想的那样 将这些方法随意放在代码的某个地方 并不能够保证正常工作 如果线程正拥有一个锁(因为它在一个同步方法或代码块中) 则当它调用yield()时不能够释放这个锁 这就意味着即使这个Java线程模型已经被挂起 等待这个锁释放的其他线程依然不能继续运行 为了缓解这个问题 最好不在同步方法中调用yield方法 将那些需要同步的代码包在一个同步块中 里面不含有非同步的方法 并且在这些同步代码块之外才调用yield

  另外一个解决方法则是调用wait()方法 使处理器放弃它当前拥有的对象的锁 如果对象在方法级别上使同步的 这种方法能够很好的工作 因为它仅仅使用了一个锁 如果它使用fine grained锁 则wait() 将无法放弃这些锁 此外 一个因为调用wait()方法而阻塞的线程 只有当其他线程调用notifyAll()时才会被唤醒

  Java线程模型模型和AWT/Swing

  在那些使用Swing 和/或AWT包创建GUI(用户图形界面)的Java程序中 AWT事件句柄在它自己的线程中运行 开发员必须注意避免将这些GUI线程与较耗时间的计算工作绑在一起 因为这些线程必须负责处理用户时间并重绘用户图形界面 换句话来说 一旦GUI线程处于繁忙 整个程序看起来就象无响应状态 Swing线程通过调用合适方法 通知那些Swing callback(例如 Mouse Listener 和 Action Listener ) 这种方法意味着listener无论要做多少事情 都应当利用listener callback方法产生其他线程来完成此项工作 目的便在于让listener callback更快速返回 从而允许Swing线程响应其他事件

  如果一个Swing线程不能够同步运行 响应事件并重绘输出 那怎么能够让其他的线程安全地修改 Swing的状态?正如上面提到的 Swing callback在Swing 线程中运行 因此他们能修改Swing数据并绘到屏幕上

  但是如果不是Swing callback产生的变化该怎么办呢?使用一个非Swing线程来修改Swing数据是不安全的 Swing提供了两个方法来解决这个问题 invokeLater()和invokeAndWait() 为了修改Swing状态 只要简单地调用其中一个方法 让Runnable的对象来做这些工作 因为Runnable对象通常就是它们自身的线程 你可能会认为这些对象会作为线程来执行 但那样做其实也是不安全的 事实上 Swing会将这些对象放到队列中 并在将来某个时刻执行它的run方法 这样才能够安全修改Swing状态

cha138/Article/program/Java/gj/201311/27597

相关参考

知识大全 Java线程模型缺陷研究[5]

Java线程模型缺陷研究[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java线程模型缺陷研究[4]

Java线程模型缺陷研究[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java线程模型缺陷研究[3]

Java线程模型缺陷研究[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java线程模型缺陷研究[2]

Java线程模型缺陷研究[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java线程模型缺陷研究[1]

Java线程模型缺陷研究[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java线程模型缺陷研究[7]

Java线程模型缺陷研究[7]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java语言深入 多线程程序模型研究

Java语言深入多线程程序模型研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多线程是较复杂

知识大全 Java 线程/内存模型的缺陷和增强

Java线程/内存模型的缺陷和增强  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java在语言

知识大全 基于Java 2运行时安全模型的线程协作

基于Java2运行时安全模型的线程协作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Java

知识大全 Java Socket多线程如何支持服务器模型

JavaSocket多线程如何支持服务器模型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Ja