现在的位置: 首页 > 综合 > 正文

黑马程序员__多线程__【Thread类的方法–线程的调度与控制】

2013年01月21日 ⁄ 综合 ⁄ 共 1758字 ⁄ 字号 评论关闭

---------------------------------------- android培训java培训、期待与您交流!
--------------------------------------------------

线程的调度与控制

start()启动线程进入可运行状态(Runnable)

stop()停止线程进入消亡状态(Dead)       //已过时,5.0以后不再支持

sleep()线程睡眠进入冻结状态(Blocked)

wait()

interrupt()停止线程(的冻结状态)

多线程通常使用循环结构,只要控制住循环就能使run()方法结束,从而结束线程
当线程处于冻结状态就读取不到标记;wait() join() sleep()都会导致冻结状态;不结束冻结状态程序就不能停止

当没有指定方式(notify,signal等)使线程恢复到运行状态时。就需要对冻结状态进行清除

interrupt()清除线程的中断(冻结)状态,强制恢复到运行状态,使其操作标记继续执行到自然结束,而不是停止状态(stop)
会抛出interruptedException
如果任何线程interrupt了当前线程,抛出该异常时,当前线程的中断(冻结)状态被清除

用法:

由于是Thread类的方法,所以可以使用线程对象直接调用:t1.interrupt()

interrup()中断线程 不是直接消亡,而是将处于冻结状态的线程强制恢复到运行状态,使其操作标记自然结束,这点跟stop有本质的区别

会抛出InterruptedException异常

守护线程

setDaemon(boolean b);参数为boolea类型

将该线程标记为守护线程,当正在运行的线程都是守护线程时,虚拟机退出必须要在启动线程前调用。

守护线程即后台线程:当所有的线程都结束后,后台线程自动结束。主线程是前台线程

join()  

临时加入线程 ;抢夺CPU执行权,执行完毕后才轮到其他线程,,,插队

当A线程执行到了B线程的join()方法时,A就会等待,等B线程执行完A才会执行

会抛出InterruptedException

toString()

覆盖了Object中的toString方法,返回线程的字符串表现形式,包括:名称;优先级;线程组

Thread.currentThread().toString()


setPriority()

更改线程的优先级;

用法:t1.set Priority(Thread.MAX_PRIORITY);设置该线程为最高优先级10

public static final int MAX_PRIORITY ; int类型的静态常量

MAX=10;MIN=1;NORM=5;

yield()

释放执行权,使线程恢复到初始化状态,减少线程连续执行的频率,使线程交替执行

多线程的使用场景:

当某些代码需要被同时执行时,为了打破单线程的局限性,就可以使用多线程

示例

class  ThreadDemo
{
	public static void main(String[] args) 
	{
		new Thread()//匿名内部类
		{
			public void run()
			{
				for (int x=0;x<100 ;x++ )
				{
				System.out.println(Thread.currentThread().getName()+"..."+x);
				}
			}
		}.start();

		Runnable r = new Runnable()//匿名内部类
		{
			public void run()
			{
				for (int x=0;x<100 ;x++ )
				{
					System.out.println(Thread.currentThread().getName()+"..."+x);
				}
			}
		};//要加标点,因为这是一个匿名对象
		new Thread(r).start();//再次使用匿名
		
		for (int x=0;x<100 ;x++ )
		{
			System.out.println(Thread.currentThread().getName()+"..."+x);
		}
	}
}

---------------------------------------- android培训java培训、期待与您交流!
--------------------------------------------------

抱歉!评论已关闭.