标签:string 次数 常用 border 计算 执行 getname dir 参数
说起线程,咱们得先了解一下几个词语:线程,进程,程序,多线程,多进程。
线程的状态
线程的状态至少有四种:新建状态,就绪状态,运行状态,(阻塞状态),死亡状态
1.新建状态
当线程被(new)创建的时候,此时的线程的状态为新建状态
线程的创建方式有三种(有的书还有资料说只有两种)
①:继承Thread类
通过继承Thread类,重写run方法(线程的主方法体),调用start()方法来启动线程。
②:实现runnable接口
通过实现runnable接口(任务接口),重写接口中的run()方法(线程任务的方法体),创建线程,然后将实现类的实例作为线程参数,然后调用start()方法启动线程
③:通过使用FutureTask
使用FutureTask来创建线程,然后用Callable来创建任务(即重写callable中的call()方法,返回值为null),然后将FutureTask作为参数创建线程
2.就绪状态
当线程创建后,线程就进入新建状态,如果不调用线程的start()方法,线程就不会进入就绪状态。调用start()方法后线程进入可运行线程池进行等待获取cpu资源
3.运行状态
当线程获取到cpu资源后,线程就开始运行,但是每个线程并不一定是执行完了属于自己的线程体的内容,再去执行下一个线程(当要执行完线程体内容时间过短时)。每个线程被分为为若干个片段,它们获取到的cpu资源不能被其一直占有,它们运行的时候是走走停停,达到所谓的并发执行,且它们的执行次序与其获取cpu资源的概率(能力)有关,获取的概率越大,就执行的次数越多。
4.死亡状态
当线程的方法体执行完毕
5.阻塞状态(并不是每一个线程都会有这种状态)
①.等待阻塞:当前线程所占用的cpu资源被剥夺,等待再次获得cpu。线程休眠
②.同步阻塞:锁对象被其他线程占用,当前线程等待其他线程释放锁对象
③.其他阻塞:sleep(),join().
附录:常用方法
void run() |
如果这个线程使用单独的
|
void start() | 导致此线程开始执行; Java虚拟机调用此线程的run 方法。 |
long getId() |
返回此线程的标识符 | String getName() | 返回此线程的名称 |
int getPriority() | 返回此线程的优先级 | Thread.State getState() | 返回此线程的状态 |
void interrupt() | 中断这个线程 | void setDaemon() | 设置为守护线程 |
void join() | 等待这个线程死亡 | void sleep(long miles) |
导致正在执行的线程以指定的毫秒数加上指定的纳秒数来暂停 (临时停止执行),这取决于系统定时器和调度器的精度和准确性 |
标签:string 次数 常用 border 计算 执行 getname dir 参数
原文地址:https://www.cnblogs.com/xiao-bd/p/9689004.html