一、创建线程
两种方法:扩展Thread类,实现Runnable接口。
二、Thread类的常用方法
*public void run():用来执行线程
*public void start():开始执行线程,JVM调用线程上的run()方法
*public void sleep(long miliseconds):使当前线程暂时停止,在经过设定的毫秒数后恢复执行
*public int setPriority(int priority):更改线程优先级
*public Thread.State getState():返回线程的状态
*public void suspend():用于挂起线程
*public void stop():用于停止线程的执行
三、线程优先级
每个线程都有其对应的优先级。优先级是由1到10之间的数字表示的。在绝大部分情况之下,线程调度会按照线程的优先级对线程进行调度。但是不能保证绝对服从该调度程序,还依赖于JVM规范。
四、Java守护线程
Java中守护线程是一个服务提供线程,为用户线程服务。守护线程有一个应用场景,就是当主线程结束时,其余的子线程(守护线程)自动关闭,不过建议还是采用中断方式中断线程。
这一块Thread类提供了两种方法:
(1):public void setDaemon(boolean status):用来将当前线程标记为守护线程(true)或用于线程(false)
(2):public boolean isDaemon():返回当前线程是否为守护线程
注意一点:要在线程启动之前将其设置为守护线程,否则会报错。
五、Java线程池
Java线程池表示一组正在等待作业,并可以进行重复使用的工作线程。
在线程池中,创建一组固定的线程,当需要线程池中的线程时被调用进行使用,使用完毕后,再次回归到线程池内。
六、Java线程组
线程组即在单个对象中组合多个线程,将这些线程概括为一个组,组内还可以包含其他线程组。线程组中允许线程访问有关自己的线程组信息,无法访问父线程组或其他无关线程组的信息。
ThreadGroup的两个构造函数:
(1):ThreadGroup(String name):创建指定名称的线程组
(2):ThreadGroup(ThreadGroup parent,String name):创建给定父线程组和该线程组名称的线程组