- 浏览: 146116 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 638int j = 0; j = j++; ... -
Google Guava Collections 使用介绍
2013-07-16 18:10 650Google Guava Collections 使用介绍 J ... -
Google Collections(Guava)中强大的Concurrent MapMaker
2013-07-16 18:07 1298仔细研究了刚发布1.0版本的Google Collection ... -
java钩子函数的使用已经kill
2013-06-27 22:31 1511package com.aircoder.test; imp ... -
java获取所有的线程信息
2013-06-24 20:02 1564public class T2 { public sta ... -
java 获取mysql datetime 时间注意
2013-05-16 14:43 1475class SPubinfo implements RowMa ... -
java wait的解锁理解********
2013-04-18 10:49 885很多书都说wait会释放线程加的锁,其实经过试验不是这样的, ... -
jvm 关闭处理注册方法
2013-04-08 16:11 725import java.lang.*; public cla ... -
wget ftp 下载文件java代码
2013-04-05 15:16 1088private boolean wget(String fil ... -
xPath 解析xml
2013-04-05 15:14 700使用xPath 根据路径解析文件. xpath 具有多个版本。 ... -
java callable疑惑:
2013-04-05 15:12 544看了 线程持的源码和Futuretask的源码终于明白了 Fu ... -
ubuntu eclipse 问题
2013-04-05 03:30 735Eclipse 3.6 在 Ubuntu 10.04 下会出现 ... -
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
2013-03-27 16:47 2475LockSupport.park(); 停止 Sy ... -
ehchahe 例子
2013-01-23 15:40 941package test; import net.sf.eh ... -
java 类加载
2012-12-24 15:21 7031: 访问一个类的静态方法的时候。不会引起一个类的初始化,即类 ... -
java 获取图片高和宽
2012-12-13 17:01 1325public static Map<String,Int ... -
java建立socket,返回浏览器的请求
2012-12-01 01:58 957package com.jdk.api.test; impo ... -
schedulePool.scheduleAtFixedRate 是个误解
2012-11-22 20:34 1174我们经常使用的java定时器单线程执行,例如: 一个任务每个 ... -
ExecutorCompletionService
2012-11-19 22:36 663package com.jdk.api; import ja ...
相关推荐
3.java线程中sleep和wait方法区别 4.谈谈常用容器类的原理和应用场景 面试 1.一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法 金山一面(Android开发) 1....
还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。 二、 课程设计内容 模拟仿真“生产者-消费者”问题的解决过程及方法。 三、 系统分析与设计 1、 系统分析 在OS中引入进程后,虽然提高了资源...
我只参考“Java 虚拟机规范”,然后研究我们应该如何设计。 一些生产级别的特性被故意忽略,它应该尽可能简化以展示总体思路。 出于教育目的,这已绰绰有余。 如果您没有时间阅读 OpenJDK 源代码,或者在需要调整...
如果您已经构建了自己的Girino并研究了固件,则应该已经熟悉它们。 等待时间参数 中提供的Arduino代码不能很好地处理您可以使用垂直绿色规则(水平橙色规则是触发采集的阈值)设置的wait duration参数。 通过串行...
Breaking point adds biography wait for a function to suspend time be loaded with in including , downloading process, carries on not be completed time be loaded with last time mission. Keywords: ...
该存储库包含“针对跨编程语言的测试脆弱性研究”论文的脆弱测试数据集。 匿名数据集 匿名数据集包含 ,它们是通过存储的脚本从GitHub中提取的。 该数据集被分类为原因,并且Flaky测试解决方案存储。 这些问题涉及...
交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑...但是,从昨天开始,由于在新网租用了一个空间,而他的mysql的wait_time设置了10s,所以引出来一系列的问题,就顺便来研究下。 或者这个标题
当一组进程请求当前正被保留/分配给某些其他进程的相同资源时,就会发生死锁情况。 处于死锁状态的进程将等待大量时间,并且它们将永远不会终止其执行,并且该组... Java编程语言用于开发我们在本文中介绍的所有算法。
16.4.9 防止错误的使用wait、notify、notifyAll方法 371 16.5 获取当前正在运行的线程 372 16.6 volatile关键字的含义与使用 372 16.7 小结 373 第17章 高级线程开发 374 17.1 线程池的使用 374 17.1.1...
本书适合广大UNIX和c程序员、研究人员、高校相关专业师生学习和参考。 目录 出版者的话 专家指导委员会 译者序 前言 第1章 基本概念 1.1 UNIX和Linux一览 1.2 UNIX的版本 1.3 使用系统调用 1.4 错误处理 1.5 UNIX...
科学研究表明:从人机工程的角度考虑,赋予电脑或程序更多人性化色彩,如支持 语音合成输出信息、语音识别输入指令、智能提示、动画等,能够充分提高人机交互的有效性 和易用性。 ---- 我们知道,在Office 97帮助...
文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半...
在新的编程思想中,指针基本上被禁止使用(JAVA中就是这样),至少也是被限制使用。而在我们交换机的程序中大量使用指针,并且有增无减。 2、防止指针/数组操作越界 【案例1.2.1】 在香港项目测试中,发现ISDN话机...