多线程初识
Posted j-simon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程初识相关的知识,希望对你有一定的参考价值。
线程入门
理解线程与进程的关系是学习线程的基础。进程是指在系统中正在运行的一个应用程序实例。
线程是比进程更小的执行单位。所谓多线程是指一个进程在执行过程中可以产生多个同时存在,同时运行的线程。
多线程机制可以合理利用资源,提高程序运行效率。一个进程至少包含一个线程,程序运行时即自动产生一个线程,如java中主函数Main就是在线程上运行的。除了主线程不再创建新的线程时,当前程序是单线程的。
线程实现
java中实现多线程有两种方式:继承Thread类和实现Runnable接口。
两种方式的比较:
- 继承Thread类可以直接使用Thread类的方法;
- 继承Thread类会受到java单继承的影响;
- 继承Thread类不利于共享资源;
- 实现Runnable接口可以避免java单继承的问题;
- 实现Runnable接口不能直接使用Thread类的方法;
- 实现Runnable接口可以实现资源共享;
重点
以上两种方式都必须重写run()方法,正确启动线程的方法是调用Thread类中的start()方法。
线程生命周期概述
java中的线程对象都有自己的生命周期,线程的生命周期一般具有五种状态,即创建,就绪,运行,阻塞和终止。
创建状态
程序使用构造方法创建线程对象后,新线程对象即进入创建状态。此时线程已经具有相应的内存空间和其它资源,但不可运行。
就绪状态
线程对象创建后调用start()方法启动线程,即进入就绪状态。就绪状态下的线程进入线程队列,等待cpu调用。
运行状态
线程获取cpu资源后即处于运行状态,此时将自动调用线程对象中的run()方法。run()方法定义了该线程的具体操作和实现功能。需要注意的是运行状态下的线程调用yield()方法后,将从运行状态返回就绪状态。
阻塞状态
运行状态的线程调用sleep(),wait()等方法后将进入阻塞状态。线程阻塞条件解除后,线程再次转入就绪状态。
终止状态
当线程执行run()方法完毕后处于终止状态,处于终止状态的线程不具有继续运行的能力。
以上是关于多线程初识的主要内容,如果未能解决你的问题,请参考以下文章