Java多线程学习笔记二

时间:2023-02-25 17:54:58

一、创建线程

两种方法:扩展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):创建给定父线程组和该线程组名称的线程组