线程-线程的挂起和恢复

1)概述:线程的挂起操作实质上就是使线程进入“非可执行”状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行。在线程挂起后,可以通过重新唤醒线程来使之恢复运行。

         run() 和start() 是大家都很熟悉的两个方法。把希望并行处理的代码都放在run() 中;stat() 用于自动调用run(),这是JAVA的内在机制规定的。当一个线程进入“非可执行”状态,必然存在某种原因使其不能继续运行,这些原因可能是如下几种情况:
     A,通过调用sleep()方法使线程进入休眠状态,线程在指定时间内不会运行。
     B,通过调用join()方法使线程挂起,如果某个线程在另一个线程t上调用t.join(),这个线程将被挂起,直到线程t执行完毕为止。
     C,通过调用wait()方法使线程挂起,直到线程得到了notify()和notifyAll()消息,线程才会进入“可执行”状态。
(2)sleep()方法:是一个使线程暂时停止一段执行时间的方法,该时间由给定的毫秒数决定。下面演示一个使用sleep()方法的例子,如下。

class ThreadA extends Thread
{
	public void run(){
		System.out.println("ThreadA is running");
	}
}
 
public class TestNew {
	public static void main(String[] args)throws InterruptedException {
		// TODO Auto-generated method stub
		ThreadA ta = new ThreadA();
		ta.start();
		ta.sleep(5000);
		System.out.println("TestNew is running");
	}
}

执行结果是:先ThreadA is running,5秒后,TestNew is running。有人会提出疑问:ta.sleep(5000);这个语句是ta线程睡眠了5秒,为什么执行结果是main这个主线程也睡眠了5秒?两者是两个独立的线程才对?原因是:在哪个线程里声明sleep,哪个线程睡眠,所以是主线程睡眠了5000毫秒=5秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值