面试题:wait()方法和sleep()这个方法有什么区别?
wait():Object类下的方法,不需要传递参数。释放锁对象,释放资源。
sleep():Thread类,需要传递参数,不释放锁对象。
等待唤醒机制的原理:
Object类中的两个方法:
wait():让当前线程处于等待状态。
notify():唤醒等待的线程。
线程的优先级;
public final void setPriority(int newPriority); 设置线程的优先级
public final int getPriority(); 获取线程的优先级
线程默认的优先级是5,范围是1-10.
注意:
线程的优先级越高,并不代表该线程一定第一个执行。
线程优先级可以再一定程度上,让该线程获取较多的执行机会。
线程的拓展:
暂停线程:
public static void yield(); 暂停当前正在执行的线程对象,并执行其他线程。
什么时候用?
他可以让线程更和谐一点的运行,避免出现成片数据的情况。
注意:如果想要真正的实现数据依次输出,还得使用等待唤醒机制。
加入线程:
public final void join(); 等待该线程终止。
什么时候用?
当某个线程(A)需要在某个线程(B)执行结束后才执行,就可以使用“加入线程”。
例子:当线程B执行完后才能执行线程A,
守护线程:
public final void setDaemon(boolean on); 设置线程为守护线程,一旦前台线程(主线程)结束了,守护线程紧跟着就结束了。
main方法也是一个线程。