1 join线程

Thread提供了让一个线程等待另一个线程完成的方法——join()方法。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完为止。
join()方法有三种重载形式:
join()
join(long millis) 最长多少毫秒, join(long millis, int nanos),最长多少毫秒加微秒.

2 后台线程

后台线程,又称为“守护线程”,JVM垃圾回收线程就是典型的后台线程。
后台线程有个特征:所有前台线程都死亡,后台线程会自动死亡。

调用Thread对象的setDaemon(true)方法可以将指定的线程设置为后台线程。

Thread类还提供了一个isDaemon()方法,用于判断指定的线程是不是后台线程。

3 线程睡眠:sleep

如果需要让当前的线程暂停一段时间,进入阻塞状态,可以调用Thread类的静态sleep()方法。sleep(long millis)。即使程序中没有其他可执行的线程,处于sleep的线程也不会执行,因此sleep()方法常用来暂停程序的执行。

4 线程让步

yield()与sleep()方法有点相似,也是Thread类的一个静态方法。它可以让当前正在执行的线程暂停,但是它不会阻塞该线程,它只是将该线程转入就绪状态。让当前程序暂停一下,让系统线程调度器重新调度一次。完全可能的是,当某个方法调用yield之后,线程调度器又将其调度出来重新执行。

5 改变线程优先级

每一个线程都有一定的优先级,优先级高的线程获得较多的执行机会,优先级低的线程则获得较少的执行机会。
每一个线程默认的优先级都与创建它的父线程的优先级相同。在默认情况下,main线程具有普通优先级,由main线程创建的子线程也具有普通优先级。

Thread类提供了setPriority(int newPriority), getPriority()方法来设置和返回指定的线程优先级,其中setPriority方法的参数可以是一个整数,0——10之间。也可以用Thread类的如下三个静态常量:

MAX_PRIOPITY:10
 MIN_PRIORITY:1
 NORM_PRIORITY:5


劲量使用静态常量来设置优先级。