线程join和sleep的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lisi1129/article/details/76503579

  线程使用 sleep(1000)和 join(1000)在运行上没有什么区别,比如下面代码

public class Run {
	public static void main(String[] args) {
		try{
			MyThread mt = new MyThread();
			mt.start();
			//mt.join(2000);
			mt.sleep(2000);
			System.out.println("end timer = "+System.currentTimeMillis());
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		
	}
}

public class MyThread extends Thread{
    public void run(){
    	try{
    		System.out.println("begin Timer ="+ System.currentTimeMillis());
    		Thread.sleep(1000);
    	}catch(InterruptedException e){
    		e.printStackTrace();
    	}
    }
}
从源码中可以了解其内部的区别如下:

1:join(long)方法在内部使用的是 wait (long) 方法来实现的;所以join(long)方法具有释放锁的特点

2:sleep (long)  方法具有不释放锁的特性

展开阅读全文

没有更多推荐了,返回首页