1.Thread.jone
其他文章的分析。http://www.blogjava.net/vincent/archive/2008/08/23/223912.html
下面来说说我自己的看法:
1. thread.jone是调用thread的wait方法,来实现阻塞当前线程的效果
2.调用wait方法的前提是获得了对象的锁
3.因此thread.jone是synchronized,即需要先获得thread对象的锁。
下面代码,因为holdthread获得了subthread的对象锁,因此主线程当调用jion方法时一直被阻塞,直到 holdthread释放锁。因为holdthread对象执行run的时间明显多于SubThread的时间,因此当holdthread释放锁,主线程发现SubThread已经inactive,直接返回,不发生等待。因此总的执行时间为9000毫秒
public class HoldThread extends Thread {
Thread t;
HoldThread(Thread t) {
this.t = t;
}
@Override
public void run() {
synchronized (t) {
System.out.println("getObjectLock");
try {
Thread.sleep(9000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.out.println("ReleaseObjectLock");
}
}
}
public class SubThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
try {
System.out.println("SubThread Start!");
sleep(5000);
System.out.println("SubThread Exit!");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class TheaderJoin {
public static void main(String[] args){
SubThread thread = new SubThread();
HoldThread holdThread =new HoldThread(thread);
try {
System.out.println("t1:" + System.currentTimeMillis());
//holdThread.start();
//Thread.sleep(1000);
thread.start();
System.out.println("t2:" + System.currentTimeMillis());
thread.join();
System.out.println("t3:" + System.currentTimeMillis());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print("Exit Main!");
}
}
当前线程阻塞,并且等待thread,有两种情况当前线程可以重新运行起来
一是其它线程调用,thread.notify()唤醒当前线程
二是thread执行结束,为什么呢?
分享到:
相关推荐
首先,Jone.Net代码生成器是一款完全免费的软件,由开发者Jone精心打造,旨在帮助C#程序员快速生成常见的代码结构,减少手动编写的时间。通过其简洁的界面和易用的操作,开发者可以迅速创建出符合规范的代码模板,...
C#代码生成相关组件(Jone.Net.Ibuilder,Jone.BuilderDALSQL) Jone.Net.IDBO----------------------------------------------------------------数据库接口 Jone.Net.Ibuilder---------------------------------...
目录(Contents) 二十周年纪念版序言(PREFACE TO THE 20TH ANNIVERSARY EDITION)......................I 第一版序言(PREFACE TO THE FIRST EDITION)...........................................................
Jone.Net代码生成器最新版 Jone.Net代码生成器最新版 Jone.Net代码生成器最新版 Jone.Net代码生成器最新版
目录(Contents) 二十周年纪念版序言(PREFACE TO THE 20TH ANNIVERSARY EDITION)......................I 第一版序言(PREFACE TO THE FIRST EDITION)...........................................................
《Jone.Net代码生成器:提升开发效率的利器》 Jone.Net代码生成器,是一款由罗敏贵开发的专业级代码生成工具,它以其高效、灵活和易用性在C#开发者中广受好评。这款工具的核心特点是基于插件化开发,允许用户根据...
14. Jone看起来很高兴,因为她在数学考试中得到了A,形容词happy修饰名词look,答案是A. happy。 这些题目覆盖了英语语法的多个重要知识点,如形容词与不定代词的位置、动词短语搭配、比较级的使用、祈使句、连词、...
2个computer network 英文课件之一,国外PPT特有的可爱风格,简单明了,图例很多,比国内感觉好
1. 在URL `http://www.jone.com/ms.htm` 中,`jone` 是主机名,`www` 是子域名,`.com` 是顶级域,代表商业机构。`http` 是协议,表示超文本传输协议。 2. Web服务器的URL不一定以`www`开头,这是常见的习惯,但...
1. 在URL `http://www.jone.com/ms.htm` 中,`Jone` 是主机名,`www` 是子域名,`com` 是顶级域,表示商业组织,而`ms.htm`是路径。选项A、B、C、D正确,选项E表述不准确,因为`com`是一个顶级域名,但不是具体的...
可以通过刷自定义固件的方式,在我们下载或制作好了自定义固件后,需要借助一些工具进入DFU模式,本教程就介绍下如何通过iREB恢复自定义固件
小学四年级英语试题主要...4. Let's go home together, Jone. 五、句子翻译: 1. 几点了?八点了。 - What time is it? It's eight o'clock. 2. 十二点了。该吃午饭了。 - It's twelve o'clock. It's time for lunch.
在"monituihuo.rar_de算法"的实验中,这两种优化算法被结合应用,目标是解决De Jone函数的全局优化问题。De Jone函数是一种常见的测试函数,具有多峰特性,用于评估优化算法在复杂问题上的性能。它通常具有多个局部...
在文档中提到了Viola-Jone算法,这是人脸检测中常用的一种算法,由Paul Viola和Michael Jones在2001年提出,它以其高效率和准确性而被广泛应用于计算机视觉领域。 首先,文档中提到的定点与浮点表示对检测精度的...
例如,`arr.join()`返回`"jone,Grrgy,john"`,而`arr.join("-")`返回`"jone-Grrgy-john"`。 除此之外,Array对象还包含许多其他有用的方法,如: 5. `push()`和`pop()`:分别用于在数组末尾添加元素和删除末尾元素...
1.具有很强的加密功能,其算法加密强度高于同类工具; 2.工具小巧实用,具有拖放、按钮等多种方法加密、解密; 3.加密后的文件没有本工具解密... 欢迎试用,并将你的宝贵意见提交至:jone7318@126.com,感谢您的支持。
", "Let's go home together, Jone."。 这些题目涵盖了小学四年级英语学习的基本范畴,旨在帮助学生巩固基础语法、词汇和日常交流技能。通过解答这些试题,学生可以检验自己的英语水平,并发现需要加强的方面。
在Linux操作系统中,命令行是其核心组成部分,它提供了与系统交互的强大工具。"Linux命令大全"涵盖了在日常使用Linux时可能遇到的各种命令,这些命令是高效管理、操作和调试系统的基石。以下是一些关键的Linux命令...
- "Let's go home together, Jone."让我们一起回家吧,约翰。 4. 句子翻译: - "What time is it? It's eight." - "It's twelve. It's time for lunch." - "It's seven fifteen. It's time for school." - "It...