`
coach
  • 浏览: 387056 次
  • 性别: Icon_minigender_2
  • 来自: 印度
社区版块
存档分类
最新评论

Java线程控制权源代码解析

阅读更多
   Java线程控制权的问题十分重要,我们在不断的学习中需要不断的注意相关的问题。下面我们就来看看在源代码中Java线程控制权式如何体现的。当wait的时候其实就是已经放出了线程的控制权,所以one可以运行。one运行时调用notify后又唤醒了two线程所以打印顺序才是:

  wait

  sleep

  wake up

  我觉得我解释的已经很清楚了。wait被调用的时候放弃锁,而控制线程是否能使用内容的关键就在于锁,wait并不是thread的内容,而来自于object。你可以这样来理解wait,我wait下就把接力棒交出去了,我当前的这个线程就暂停运行,记住是当前的线程。然后当我交出的接力棒已经又回到我手中的时候,也就是说其他的线程已经完成了任务。这个时候我拿到接力棒继续奔跑。

  有时候你应该把问题简单化,建议你看看thinking in java第四版,我明白你是想观察阻塞的出现,你可以将one。start放到two。start的上边就会明白什么意思了

  1.package test;

  2.import java.util.LinkedList;

  3.public class Test_2_A2 {

  4.public static void main(String[] args) {

  5.SubTreadOne one = new SubTreadOne();

  6.SubTreadTwo two = new SubTreadTwo(one);

  7.two.start();

  8.try {

  9.Thread.sleep(1000);

  10.} catch (InterruptedException e) {

  11.e.printStackTrace();

  12.}

  13.one.start();

  14.}

  15.}

  16.class SubTreadOne extends Thread {

  17.public SubTreadOne() {

  18.}

  19.public void run() {

  20.try {

  21.System.out.println("sleep");

  22.Thread.sleep(3000);

  23.synchronized (this) {

  24.this.notifyAll();

  25.}

  26.}catch (InterruptedException e) {

  27.e.printStackTrace();

  28.}

  29.}

  30.}

  31.class SubTreadTwo extends Thread {

  32.SubTreadOne one;

  33.public SubTreadTwo(SubTreadOne one) {

  34.this.one = one;

  35.}

  36.public SubTreadTwo() {

  37.}

  38.public void run() {

  39.try {

  40.synchronized (one) {

  41.System.out.println("wait");

  42.one.wait();

  43.System.out.println("wake up");

  44.}

  45.} catch (InterruptedException e) {

  46.e.printStackTrace();

  47.}

  48.}

  49.}

  以上就是对Java线程控制权有关代码的详细介绍。
分享到:
评论

相关推荐

    java+多线程+同步详解源代码学习

    在"javaYdmxx107.zip"文件中,可能包含了详细的Java多线程和同步的源代码示例。通过下载并解压文件,你可以: - 分析源码,了解不同线程创建和控制方法的实现。 - 查看同步机制的实际应用,如synchronized和Lock...

    操作系统进程调度java源代码

    5. **Java源代码分析**:源代码可能会包含对上述概念的实现,如定义进程类(包含优先级、执行时间等属性),创建进程队列,实现调度算法(如优先级比较、时间片分配等),以及模拟CPU的切换过程。此外,可能还会有...

    Java贪吃蛇毕业设计源代码(配套毕业论文请看我其他资源)

    Java贪吃蛇游戏是一款经典的计算机程序设计项目,尤其适合初学者和毕业生进行实践与学习。这个项目的源代码提供了实现这个游戏的全部细节,...同时,通过阅读和分析源代码,有助于培养解决问题和独立开发项目的能力。

    java多线程案例——未完成

    Java多线程是Java编程中的一个重要领域,它允许程序同时执行多个任务,...由于案例是不完整的,具体的实现细节和问题还需要根据源代码来分析和补充。对于初学者来说,理解并掌握这些概念是成为Java多线程专家的基础。

    java 摇奖程序使用线程实现

    在提供的压缩包文件“摇奖程序”中,应该包含了实现上述功能的源代码,通过阅读和分析这些代码,我们可以更深入地理解Java线程在实际应用中的使用方式。对于初学者来说,这是一个很好的学习实例,可以从中了解如何在...

    精通spring 源代码

    Spring作为Java领域最流行的轻量级应用框架之一,其源代码解析对于开发者来说具有极高的学习价值。以下将从几个关键知识点进行深入探讨: 1. **依赖注入(Dependency Injection,DI)**:Spring的核心特性之一,它...

    PCsharevip2009源代码

    4. **多线程与并发**:为了提供高效服务,源代码可能使用多线程或多进程技术来处理并发请求,提高程序性能。 5. **数据库交互**:如果涉及用户数据存储,源代码可能包含了SQL查询和数据库操作,可能是MySQL、SQLite...

    servlet源代码

    自Servlet 3.0版本开始,Servlet API引入了异步处理能力,允许Servlet在`service()`方法内启动一个异步操作,然后返回控制权给容器,从而提高性能。 8. **Filter**: 除了Servlet之外,`javax.servlet.Filter`...

    纯java代码实现各种视频转flv格式,支持在线播放。

    同时,对于特定的系统环境和需求,自定义实现可以提供更高的灵活性和控制权。 在提供的压缩包`test`中,可能包含了示例代码、配置文件或其他辅助资源。为了详细了解和学习这个纯Java实现,建议解压后仔细研究其中的...

    java编写的操作系统

    分析这些代码可以帮助我们理解作者如何使用Java语言和其库来构建操作系统的核心组件,包括内存管理、进程控制、I/O操作等。 总的来说,使用Java编写操作系统是一个创新性的尝试,虽然面临一些挑战,如性能优化和...

    JAVA常见面试题300道

    它通过编译源代码(.java 文件)为字节码(.class 文件),使得在任何安装了 Java 虚拟机(JVM)的平台上都可以执行 Java 程序,而无需为每个平台单独编写代码。这是因为 Java 字节码是一种中间代码,由 JVM 解释...

    多任务、多线程下载

    通过阅读和分析这些源代码,我们可以更深入地了解博主是如何实现多任务、多线程下载功能的,包括他们使用的编程语言、设计模式、具体算法以及如何解决上述提到的问题。 总之,多任务、多线程下载是提高下载性能的...

    Java入门Java概述.doc

    6. 维护与升级:Java的源代码可读性强,易于维护和升级,减少了软件生命周期中的问题。 随着Java技术的不断发展,它已经成为全球软件开发者的重要工具,不仅在企业级应用中占据主导地位,还在教育领域中广为传播,...

    Java编的五子棋.

    通过阅读和理解这个项目的源代码,开发者可以深入学习Java编程的实际应用,提升自己的编程技能和解决问题的能力。对于初学者而言,这是一个很好的实践项目,可以帮助他们将理论知识转化为实际操作。

    java代码-47梁权耀

    在Java编程语言中,"梁权耀"可能是一位开发者或者教育者的姓名,而"47"可能是项目编号、课程编号或者是代码示例的序列号。这个压缩包包含两个文件...如果你需要深入解析代码,建议提供更详细的信息或者直接查看源代码。

    多线程序示例:赛马程序

    这个赛马程序示例可能涵盖了上述一些或多线程编程的原理,通过观察和分析源代码,可以更深入地理解和掌握多线程编程的技术。在实践中,理解并熟练运用这些知识能帮助开发者编写出高效、稳定的多线程应用。

    Java VM Specification

    - **字节码生成**:Java源代码经过编译器转换成字节码。 - **类加载**:类加载器将字节码文件加载到内存中。 - **链接**:解析符号引用为直接引用,准备类变量的初始值。 - **初始化**:执行类构造器`<clinit>`方法...

    计算机操作系统实验 时钟调度算法源代码

    在Java中,可以利用线程(Thread)类和并发库(java.util.concurrent)来模拟进程的创建、调度和上下文切换。通过编写相应的类和方法,可以构建一个模拟的进程池,其中每个进程对象代表一个操作系统中的进程,包含...

Global site tag (gtag.js) - Google Analytics