大漠驼铃

置身浩瀚的沙漠,方向最为重要,希望此blog能向大漠驼铃一样,给我方向和指引。
Java,Php,Shell,Python,服务器运维,大数据,SEO, 网站开发、运维,云服务技术支持,IM服务供应商, FreeSwitch搭建,技术支持等. 技术讨论QQ群:428622099
随笔 - 238, 文章 - 3, 评论 - 117, 引用 - 0
数据加载中……

Java 线程学习(3):sleep()和join()方法

  sleep方法会使当前的线程暂停执行一定时间(给其它线程运行机会)。读者可以运行示例1,看看结果就明白了。sleep方法会抛出异常,必须提供捕获代码。
实例一:
public class ThreadTest implements Runnable{
 public void run(){
 
for(int k=0;k<5;k++){
 
if(k==2){
 
try{
 Thread.currentThread().sleep(
5000);
 }
 
catch(Exception e){}
 }
 System.out.println(Thread.currentThread().getName()
 
+":"+k);
 }
 }
 public static void main(String[] args){
 Runnable r
=new ThreadTest();
 Threadt 1
=new Thread(r,"t1_name");
 Threadt 2
=new Thread(r,"t2_name");
 t1.setPriority(Thread.MAX_PRIORITY);
 t2.setPriority(Thread.MIN_PRIORITY);
 t1.start();
 t2.start();
 }
}
t1被设置了最高的优先级,t2被设置了最低的优先级。t1不执行完,t2就没有机会执行。但由于t1在执行的中途休息了5秒中,这使得t2就有机会执行了。

实例二:
public class ThreadTest implements Runnable{
 public synchronized void run(){
 
for(int k=0;k<5;k++){
 
if(k==2){
 
try{
 Thread.currentThread().sleep(
5000);
 }
 
catch(Exceptione){}
 }
 System.out.println(Thread.currentThread().getName()
 
+":"+k);
 }
 }
 publicstaticvoidmain(String[]args){
 Runnable r
=new ThreadTest();
 Threadt 1
=new Thread(r,"t1_name");
 Threadt 2
=new Thread(r,"t2_name");
 t1.start();
 t2.start();
 }
}
请读者首先运行示例程序,从运行结果上看:一个线程在sleep的时候,并不会释放这个对象的锁标志。


join()方法:
join()方法,它能够使调用该方法的线程在此之前执行完毕。
实例a
public class ThreadTest implements Runnable{
 
public static int a=0;
 
public void run(){
 
for(intk=0;k<5;k++){
 a
=a+1;
 }
 }
 
public static void main(String[] args){
 Runnable r
=new ThreadTest();
 Thread t
=new Thread(r);
 t.start();
 System.out.println(a);
 }
}
运行结果不一定是5, 如果想让 输出的结果是5, 需要运用join,
把上面的代码改成如下:
public class ThreadTest implements Runnable{
 
public static int a=0;
 
public void run(){
 
for(intk=0;k<5;k++){
 a
=a+1;
 }
 }
 
public static void main(String[] args){
 Runnable r
=new ThreadTest();
 Thread t
=new Thread(r);
 t.start();
     t.join();
 System.out.println(a);
 }
}
测试一下以上的代码即可,答案为输出5.join()方法会抛出异常,应该提供捕获代码。或留给JDK捕获。

posted on 2009-02-26 19:44 草原上的骆驼 阅读(459) 评论(0)  编辑  收藏 所属分类: JAVA基础知识


只有注册用户登录后才能发表评论。


网站导航: