多线程__【Thread类的方法--线程的调度与控制】



线程的调度与控制

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);
		}
	}
}




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值