- 浏览: 153449 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lyaqys:
lz实现的OptimisticExclusiveLock有点问 ...
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
[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");
}
}
}
而且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 栈内存解惑
2013-10-23 23:41 673int j = 0; j = j++; ... -
Google Guava Collections 使用介绍
2013-07-16 18:10 708Google Guava Collections 使用介绍 J ... -
Google Collections(Guava)中强大的Concurrent MapMaker
2013-07-16 18:07 1356仔细研究了刚发布1.0版本的Google Collection ... -
java钩子函数的使用已经kill
2013-06-27 22:31 1555package com.aircoder.test; imp ... -
java获取所有的线程信息
2013-06-24 20:02 1599public class T2 { public sta ... -
java 获取mysql datetime 时间注意
2013-05-16 14:43 1522class SPubinfo implements RowMa ... -
java wait的解锁理解********
2013-04-18 10:49 944很多书都说wait会释放线程加的锁,其实经过试验不是这样的, ... -
jvm 关闭处理注册方法
2013-04-08 16:11 758import java.lang.*; public cla ... -
wget ftp 下载文件java代码
2013-04-05 15:16 1156private boolean wget(String fil ... -
xPath 解析xml
2013-04-05 15:14 735使用xPath 根据路径解析文件. xpath 具有多个版本。 ... -
java callable疑惑:
2013-04-05 15:12 580看了 线程持的源码和Futuretask的源码终于明白了 Fu ... -
ubuntu eclipse 问题
2013-04-05 03:30 791Eclipse 3.6 在 Ubuntu 10.04 下会出现 ... -
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
2013-03-27 16:47 2545LockSupport.park(); 停止 Sy ... -
ehchahe 例子
2013-01-23 15:40 1009package test; import net.sf.eh ... -
java 类加载
2012-12-24 15:21 7551: 访问一个类的静态方法的时候。不会引起一个类的初始化,即类 ... -
java 获取图片高和宽
2012-12-13 17:01 1397public static Map<String,Int ... -
java建立socket,返回浏览器的请求
2012-12-01 01:58 1016package com.jdk.api.test; impo ... -
schedulePool.scheduleAtFixedRate 是个误解
2012-11-22 20:34 1237我们经常使用的java定时器单线程执行,例如: 一个任务每个 ... -
ExecutorCompletionService
2012-11-19 22:36 713package com.jdk.api; import ja ...
相关推荐
`synchronized`关键字、`wait()`和`notify()`方法是Java多线程中用于控制并发访问共享资源的重要工具,它们是Java内存模型(JMM)的一部分,主要用于解决线程间的同步问题。 一、`synchronized`关键字 `...
《Java编程深入研究》涵盖了Java开发的多个重要方面,旨在帮助开发者从基础到高级,全面理解和掌握这门广泛使用的编程语言。在这个过程中,我们将探讨Java的环境配置、服务器的运用,以及一系列实用示例。 首先,...
2. **线程同步与通信**:Java提供了一系列的同步机制,如synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口(如ReentrantLock)和Condition接口,用于控制线程间的协作和避免数据竞争问题。...
为了保证线程安全,开发者需要熟悉并发控制机制,如synchronized关键字、wait()和notify()方法,以及使用java.util.concurrent包中的工具类。 浏览器的另一个核心部分是网页解析。Java可以使用内置的XML解析器处理...
8. **多线程**:Java内置了对多线程的支持,包括Thread类、Runnable接口、同步机制(synchronized关键字、wait/notify机制)、线程池(ExecutorService)等。掌握并发编程的基本原理和实践技巧是高级Java开发者必备...
综上所述,中山大学研究生学院的Java多线程课程涵盖了多线程编程的关键知识点,从基础到高级,为学生提供了全面的并发编程理论和实践指导。通过学习这些内容,学生可以更好地理解和解决实际开发中的并发问题。
Java2引入了丰富的多线程支持,包括Thread类、synchronized关键字、wait/notify机制等。源码分析可以帮助理解线程同步和通信,避免并发问题。 6. **输入/输出与网络编程**: Java2提供了强大的I/O和网络编程API,...
7. **多线程+操作系统**:这部分可能探讨了Java如何处理并发,如Thread类的使用、同步机制(synchronized关键字、wait/notify、ReentrantLock等),以及线程池的概念。结合操作系统,可能会讨论线程调度、上下文切换...
Java编程的逻辑是编程世界中的一个重要主题,尤其对于初学者来说,掌握这些基本概念和思维方式至关重要。Java作为一种广泛使用的面向对象编程语言,以...不断深入研究,结合实际项目经验,才能真正掌握Java编程的艺术。
"中科时代(北京)信息技术研究院(无线中国)Java笔试题" 这个标题表明这是一份来自中科时代(北京)信息技术研究院,也被称为无线中国的Java编程技术笔试题目集。这类题目通常涵盖了Java语言的基础知识、进阶特性、...
Java语言是世界上最流行的编程语言之一,其广泛应用在各种软件开发领域。这个“Java语言十大经典案例”涵盖了Java的核心特性,包括文件与...对于Java初学者和进阶开发者来说,这是一个宝贵的资源,值得仔细研究和实践。
4. **多线程**:Java内置了对多线程的支持,经典代码可能涉及Thread类的使用,线程同步(synchronized关键字,wait/notify机制),以及ExecutorService和Future接口的高级用法。 5. **IO流**:Java的IO流系统强大而...
7. **Java集合框架的高级特性和设计模式**:深入研究Set、Map接口的实现类,如TreeSet、TreeMap,以及设计模式如单例、工厂、装饰器等。 高级阶段: 8. **JVM原理**:理解Java虚拟机的工作机制,包括内存模型、垃圾...
【宋红康java笔记】是一份综合性的Java学习资料,...以上是【宋红康java笔记】中可能涵盖的部分重要知识点,每个主题都值得深入研究和实践。通过学习这些内容,开发者可以全面掌握Java编程,并有能力解决各种实际问题。
通过深入研究"164个Java完美程序"中的每个案例,你不仅可以巩固理论知识,还能积累实践经验,这对于成为一个熟练的Java开发者来说是非常宝贵的。在实践中学习,不断挑战和解决问题,将使你的Java编程技能达到新的...
开发者可以通过研究游戏源码了解如何创建和启动线程,以及如何使用synchronized关键字和wait/notify机制实现线程间的通信与同步,以确保游戏运行的稳定性和响应速度。 此外,Java的事件驱动模型在处理用户交互时也...
这个“JAVA研究文集”包含了对Java语言深入研究的各种文章,旨在提供全面且经典的Java学习资料,帮助开发者提升技能和理解。本文将深入探讨Java的关键概念、特性及其在实际开发中的应用。 1. **Java基础** - 类与...
7. **多线程**:Java提供了丰富的多线程支持,包括Thread类、Runnable接口,以及同步机制如synchronized关键字、wait()、notify()方法。 8. **网络编程**:Java提供了Socket编程接口,可以用来创建客户端和服务端...
通过对【Wangmeng_java34899335】这个压缩包中的源码进行研究,你可以逐步掌握Java2的核心技术,加深对编程实践的理解,提升解决问题的能力。这些代码示例将是你学习Java编程的宝贵财富,鼓励你动手实践,不断探索和...
通过深入研究"codes"中的每个示例,学习者不仅可以巩固Java编程基础,还能掌握面向对象设计原则和最佳实践,为成为专业的Java开发者奠定坚实基础。同时,对于已经有一定经验的开发者来说,这个代码库也是回顾基础...