`

java wait 研究

阅读更多
[color=red]java wait 的使用必须放在实例对象本身的锁的范围内,
而且wait对于锁的释放仅仅只对 实例对象本身的锁有用
[/color]

package com.sohu.smc.test;

public class TestWait {
public static final Object a=new Object();
public static final Object b=new Object();
public static Runnable r = null;
public static void main(String[] args) throws InterruptedException {
       r = new A();
new Thread(r).start();//a =1//a的值是一样的
// new Thread(r).start();// a=1
Thread.sleep(100);
Runnable rr = new B();
new Thread(rr).start();// 必须等待
}


}

class A implements Runnable{

int a = 0;
@Override
public void run() {
    a=+1;
System.out.println("A"+a);
synchronized (TestWait.a) {//

synchronized (this) {
try {
wait(10000);//仅仅是释放this锁,即对本对象的枷锁
System.out.println("....aaa");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

}
class B implements Runnable{


public  B(){
System.out.println("init b");
}

@Override
public void run() {
System.out.println("b....");
synchronized (TestWait.a) {// 假如是 TestWait.r , 则需要等待wait(10000); 结束
System.out.println("..............b");
}

}

}
分享到:
评论

相关推荐

    Java的sychronized、wait和notify范例

    `synchronized`关键字、`wait()`和`notify()`方法是Java多线程中用于控制并发访问共享资源的重要工具,它们是Java内存模型(JMM)的一部分,主要用于解决线程间的同步问题。 一、`synchronized`关键字 `...

    java编程深入研究

    《Java编程深入研究》涵盖了Java开发的多个重要方面,旨在帮助开发者从基础到高级,全面理解和掌握这门广泛使用的编程语言。在这个过程中,我们将探讨Java的环境配置、服务器的运用,以及一系列实用示例。 首先,...

    JAVA并行计算的一些资料 论文

    2. **线程同步与通信**:Java提供了一系列的同步机制,如synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口(如ReentrantLock)和Condition接口,用于控制线程间的协作和避免数据竞争问题。...

    Java 浏览器 Java浏览器

    为了保证线程安全,开发者需要熟悉并发控制机制,如synchronized关键字、wait()和notify()方法,以及使用java.util.concurrent包中的工具类。 浏览器的另一个核心部分是网页解析。Java可以使用内置的XML解析器处理...

    东北大学计算机考研Java知识点笔记

    8. **多线程**:Java内置了对多线程的支持,包括Thread类、Runnable接口、同步机制(synchronized关键字、wait/notify机制)、线程池(ExecutorService)等。掌握并发编程的基本原理和实践技巧是高级Java开发者必备...

    中山大学研究生学院java讲义之(多线程)

    综上所述,中山大学研究生学院的Java多线程课程涵盖了多线程编程的关键知识点,从基础到高级,为学生提供了全面的并发编程理论和实践指导。通过学习这些内容,学生可以更好地理解和解决实际开发中的并发问题。

    彻底研究Java2源码

    Java2引入了丰富的多线程支持,包括Thread类、synchronized关键字、wait/notify机制等。源码分析可以帮助理解线程同步和通信,避免并发问题。 6. **输入/输出与网络编程**: Java2提供了强大的I/O和网络编程API,...

    JAVA个人资料JAVA

    7. **多线程+操作系统**:这部分可能探讨了Java如何处理并发,如Thread类的使用、同步机制(synchronized关键字、wait/notify、ReentrantLock等),以及线程池的概念。结合操作系统,可能会讨论线程调度、上下文切换...

    Java编程的逻辑

    Java编程的逻辑是编程世界中的一个重要主题,尤其对于初学者来说,掌握这些基本概念和思维方式至关重要。Java作为一种广泛使用的面向对象编程语言,以...不断深入研究,结合实际项目经验,才能真正掌握Java编程的艺术。

    中科时代(北京)信息技术研究院(无线中国)Java笔试题

    "中科时代(北京)信息技术研究院(无线中国)Java笔试题" 这个标题表明这是一份来自中科时代(北京)信息技术研究院,也被称为无线中国的Java编程技术笔试题目集。这类题目通常涵盖了Java语言的基础知识、进阶特性、...

    java语言十大经典案例

    Java语言是世界上最流行的编程语言之一,其广泛应用在各种软件开发领域。这个“Java语言十大经典案例”涵盖了Java的核心特性,包括文件与...对于Java初学者和进阶开发者来说,这是一个宝贵的资源,值得仔细研究和实践。

    Java经典代码 Java经典代码

    4. **多线程**:Java内置了对多线程的支持,经典代码可能涉及Thread类的使用,线程同步(synchronized关键字,wait/notify机制),以及ExecutorService和Future接口的高级用法。 5. **IO流**:Java的IO流系统强大而...

    java私塾教材大全(初级中级高级)

    7. **Java集合框架的高级特性和设计模式**:深入研究Set、Map接口的实现类,如TreeSet、TreeMap,以及设计模式如单例、工厂、装饰器等。 高级阶段: 8. **JVM原理**:理解Java虚拟机的工作机制,包括内存模型、垃圾...

    宋红康java笔记.rar

    【宋红康java笔记】是一份综合性的Java学习资料,...以上是【宋红康java笔记】中可能涵盖的部分重要知识点,每个主题都值得深入研究和实践。通过学习这些内容,开发者可以全面掌握Java编程,并有能力解决各种实际问题。

    164个java经典代码案例

    通过深入研究"164个Java完美程序"中的每个案例,你不仅可以巩固理论知识,还能积累实践经验,这对于成为一个熟练的Java开发者来说是非常宝贵的。在实践中学习,不断挑战和解决问题,将使你的Java编程技能达到新的...

    Java雷电游戏,主要用SWING和Java的进程,纯Java代码写的,主要为开发人员对Java线程的认识

    开发者可以通过研究游戏源码了解如何创建和启动线程,以及如何使用synchronized关键字和wait/notify机制实现线程间的通信与同步,以确保游戏运行的稳定性和响应速度。 此外,Java的事件驱动模型在处理用户交互时也...

    JAVA研究文集

    这个“JAVA研究文集”包含了对Java语言深入研究的各种文章,旨在提供全面且经典的Java学习资料,帮助开发者提升技能和理解。本文将深入探讨Java的关键概念、特性及其在实际开发中的应用。 1. **Java基础** - 类与...

    Java源码:比较经典的一些Java源代码,适合于初学者

    7. **多线程**:Java提供了丰富的多线程支持,包括Thread类、Runnable接口,以及同步机制如synchronized关键字、wait()、notify()方法。 8. **网络编程**:Java提供了Socket编程接口,可以用来创建客户端和服务端...

    Java2核心技术卷二 配套源码

    通过对【Wangmeng_java34899335】这个压缩包中的源码进行研究,你可以逐步掌握Java2的核心技术,加深对编程实践的理解,提升解决问题的能力。这些代码示例将是你学习Java编程的宝贵财富,鼓励你动手实践,不断探索和...

    疯狂java讲义第二版代码

    通过深入研究"codes"中的每个示例,学习者不仅可以巩固Java编程基础,还能掌握面向对象设计原则和最佳实践,为成为专业的Java开发者奠定坚实基础。同时,对于已经有一定经验的开发者来说,这个代码库也是回顾基础...

Global site tag (gtag.js) - Google Analytics