package com.fh.interview;
/**
* join测试
*
*
* sleep和wait方法的区别
*
* 1、sleep()方法是Thread的静态方法,而wait是Object实例方法
2、wait()方法必须要在同步方法或者同步块中调用,也就是必须已经获得对象锁。
而sleep()方法没有这个限制可以在任何地方种使用。
另外,wait()方法会释放占有的对象锁,使得该线程进入等待池中,
等待下一次获取资源。而sleep()方法只是会让出CPU并不会释放掉对象锁;
3、sleep()方法在休眠时间达到后如果再次获得CPU时间片就会继续执行,
而wait()方法必须等待Object.notift/Object.notifyAll通知后,
才会离开等待池,并且再次获得CPU时间片才会继续执行
yield方法:
一旦執行,让出cpu时间,再下一次竞争中获取时间片,继续执行
让出的cpu时间只能分配给相同优先级的线程
*
* @author
* @create 2018-05-27 下午3:48
**/
public class JoinDemo {
public static void main(String[] args) {
Thread preThread = new Thread();
for (int i=1;i<10;i++){
Thread currentThread = new JoinThread(preThread);
currentThread.start();
preThread=currentThread;
}
}
static class JoinThread extends Thread{
private Thread thread;
public JoinThread(Thread thread){
this.thread=thread;
}
@Override
public void run() {
try {
thread.join();
System.out.println("thread name:"+thread.getName());
}catch (Exception e){
e.printStackTrace();
}
}
}
}