Java中线程的生命周期

首先简单的介绍一下线程:

进程:正在运行中的程序。其实进程就是一个应用程序运行时的内存分配空间。

线程:其实就是进程中的一条执行路径。进程负责的是应用程序的空间的标示。线程负责的是应用程序的执行顺序。

线程的生命周期:

一般来说线程状态有一下几种:

①新建:

创建线程对象。

②就绪:

start方法被调用,线程获得了执行资格,但还没有执行权。

(随机性的原理:因为cpu的快速切换造成,哪个线程获取到了cpu的执行权,哪个线程就执行。)

③运行:

扫描二维码关注公众号,回复: 2058158 查看本文章

线程获得了CPU的执行权,此状态有执行资格也有执行权。

④阻塞:

由于一些操作让线程处于了该状态,没有了执行资格,也没有了执行权。而另一些操作又可以将线程激活,激活后处于就绪状态。

⑤死亡:

run方法结束,线程对象变成垃圾,等待GC回收。

再顺便介绍一下线程的一些方法:

void run()  继承Thread或者实现Runnable时必须实现的方法,里面写耗费时间的操作。

void start() 开启线程的方法

static void sleep(long t) 释放CPU的执行权,不释放锁

static void sleep(long millis,int nanos)

final void wait()释放CPU的执行权,释放锁

final void notify()唤醒线程池中的任意一个线程

interrupt():中断线程。

setPriority(int newPriority):设置线程的优先级。(默认优先级是5)

getPriority():返回线程的优先级。

toString():返回该线程的字符串表示形式,包括线程名称、优先级和线程组。

Thread.yield():暂停当前正在执行的线程对象,并执行其他线程。 礼让线程

setDaemon(true):将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。该方法必须在启动线程前调用。

join: 加入一个线程,当这个线程执行完之后才会执行别的线程。

猜你喜欢

转载自www.linuxidc.com/Linux/2015-10/123745.htm