JAVA多线程编程

为什么要使用多线程?

1. 使用更多的处理器核心

2. 更快的响应时间

3. 更好的编程模型

线程优先级

在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1-10。

线程的状态:NEW / RUNNABLE / BLOCKED / WAITING / TIME_WAITING /TERMINATED一共6种状态

Deamon线程是一种支持型线程,因为它主要被用作程序中后台调度以及支持性工作。这意味着当一个Java虚拟机中不存在非Deamon线程的时候,java虚拟机将会退出。可以通过set方法将线程设置为Deamon线程。(注意其finally可能不会被执行)


-->启动和终止线程

通过调用线程的start()方法进行启动。

构造线程:一个新构造的线程对象是由其parent线程来进行空间分配的,而child线程继承了parent是否为Deamon、优先级和加载资源的contextClassLoader等。初始化完成后在堆内存中等待运行。

启动线程:线程对象在初始化完成后调用start()方法就可以启动这个线程。start()方法的含义是:当前线程(parent线程)同步告知java虚拟机,只要线程规划器空闲,应立即调用start()方法的线程

理解中断:中断可以理解为线程的一个标志位属性,它表示一个运行中的线程是否被其他线程进行了中断操作。其他线程通过调用该线程的interrupt()方法对其进行中断操作。

过期的suspend() / resume() / stop()(为什么过期了?)不建议使用的原因主要是以suspend()方法为例,在调用后,线程不会释放已经占用的资源(比如锁),而是占用着资源进入睡眠状态,这样容易引发死锁问题

如何安全地终止线程?使用中断。中断操作是一种简便的线程间的交互方式,而这种交互方式最适合用来取消或者停止任务。除了中断以外还可以利用一个boolean变量来控制是否需要停止任务并终止该线程。

main线程通过中断操作和cancle()方法均可使CountThread得以终止。这种通过标志位或者中断操作的方式能够使线程在终止时有机会去清理资源,而不是武断地将线程停止,因此这种终止线程的方法更加安全,优雅。

你可能感兴趣的:(JAVA多线程编程)