Java多线程编程精要之高级支持

pgstolheh

pgstolheh

2016-01-29 12:57

Java多线程编程精要之高级支持,Java多线程编程精要之高级支持
  线程组

  线程是被个别创建的,但可以将它们归类到线程组中,以便于调试和监视。只能在创建线程的同时将它与一个线程组相关联。在使用大量线程的程序中,使用线程组组织线程可能很有帮助。可以将它们看作是计算机上的目录和文件结构。

  线程间发信

  当线程在继续执行前需要等待一个条件时,仅有 synchronized 关键字是不够的。虽然 synchronized 关键字阻止并发更新一个对象,但它没有实现线程间发信。Object 类为此提供了三个函数:wait()、notify() 和 notifyAll()。以全球气候预测程序为例。这些程序通过将地球分为许多单元,在每个循环中,每个单元的计算都是隔离进行的,直到这些值趋于稳定,然后相邻单元之间就会交换一些数据。所以,从本质上讲,在每个循环中各个线程都必须等待所有线程完成各自的任务以后才能进入下一个循环。这个模型称为 屏蔽同步,下例说明了这个模型:

  屏蔽同步

   数 notify() 只通知一个正在等待的线程,当对每次只能由一个线程使用的资源进行访问限制时,这个函数很有用。但是,不可能预知哪个线程会获得这个通知,因为这取决于 Java 虚拟机 (JVM) 调度算法。

  将 CPU 让给另一个线程

  当线程放弃某个稀有的资源(如数据库连接或网络端口)时,它可能调用 yield() 函数临时降低自己的优先级,以便某个其他线程能够运行。

  守护线程

  有两类线程:用户线程和守护线程。用户线程是那些完成有用工作的线程。 守护线程是那些仅提供辅助功能的线程。Thread 类提供了 setDaemon() 函数。Java 程序将运行到所有用户线程终止,然后它将破坏所有的守护线程。在 Java 虚拟机 (JVM) 中,即使在 main 结束以后,如果另一个用户线程仍在运行,则程序仍然可以继续运行。
展开更多 50%)
分享

猜你喜欢

Java多线程编程精要之高级支持

Java JAVA基础
Java多线程编程精要之高级支持

Java多线程编程精要

Java JAVA基础
Java多线程编程精要

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java多线程编程精要之基础

Java JAVA基础
Java多线程编程精要之基础

Java多线程编程精要之实现线程

Java JAVA基础
Java多线程编程精要之实现线程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java 多线程编程

编程语言 网络编程
Java 多线程编程

浅析Java多线程编程中的高级技术

编程语言 网络编程
浅析Java多线程编程中的高级技术

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JavaBean实现多文件上传

JavaBean实现多文件上传

求助:如何在PHP+mysql中实现数据备份? - PHPchina

求助:如何在PHP+mysql中实现数据备份? - PHPchina
下拉加载更多内容 ↓