本文详细介绍java中线程概念描述
请读者首先运行示例8程序,从运行结果上看:一个线程在sleep的时候,并不会释放这个对象的锁标志。
四:join()
示例9:
publicclassThreadTestimplementsRunnable{
publicstaticinta=0;
publicvoidrun(){
for(intk=0;k<5;k++){
a=a+1;
}
}
publicstaticvoidmain(String[]args){
Runnabler=newThreadTest();
Threadt=newThread(r);
t.start();
System.out.println(a);
}
}
请问程序的输出结果是5吗?答案是:有可能。其实你很难遇到输出5的时候,通常情况下都不是5。这里不讲解为什么输出结果不是5,我要讲的是:
怎样才能让输出结果为5!其实很简单,join()方法提供了这种功能。join()方法,它能够使调用该方法的线程在此之前执行完毕。
把示例9的main()方法该成如下这样:
publicstaticvoidmain(String[]args)throwsException{
Runnabler=newThreadTest();
Threadt=newThread(r);
t.start();
t.join();
System.out.println(a);
}
这时,输出结果肯定是5!join()方法会抛出异常,应该提供捕获代码。或留给JDK捕获。
示例10:
publicclassThreadTestimplementsRunnable{
publicvoidrun(){
for(intk=0;k<10;k++){
System.out.print(""+k);
}
}
publicstaticvoidmain(String[]args)throwsException{
Runnabler=newThreadTest();
Threadt1=newThread(r);
Threadt2=newThread(r);
t1.start();
t1.join();
t2.start();
}
}
责编:豆豆技术应用
- Java新闻
- Java入门教程
- Java开发工具
- J2EE
- J2SE
- J2ME
- EJB/Spring
- Applet/Swing
- Servlet/JSP
- Struts/Hibernate
- JDBC/JDO
- Ajax
- 认证考试
- JAVA对象比较器Comparator
- Java 6 RowSet 使用完全剖析
- 深入了解"Java"中的“异常机制”
- 讨论5种跟踪Java执行的方法
- Java专业术语标准化规范
- java中线程概念描述
- JAVA中的反射机制详解
- Java语言灵巧指针与垃圾回收
- 讲述java语言中内部类的研究
- Java对于Cookie的操作详解