zoukankan      html  css  js  c++  java
  • 多线程__【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);
    		}
    	}
    }




  • 相关阅读:
    状态压缩 + 暴力 HDOJ 4770 Lights Against Dudely
    简单几何(推公式) UVA 11646 Athletics Track
    简单几何(四边形形状) UVA 11800 Determine the Shape
    简单几何(求交点) UVA 11437 Triangle Fun
    计算几何模板
    简单几何(相对运动距离最值) UVA 11796 Dog Distance
    简单几何(求划分区域) LA 3263 That Nice Euler Circuit
    覆盖的面积 HDU
    Desert King 最小比率生成树 (好题)
    约会安排 (区间合并)毒瘤题
  • 原文地址:https://www.cnblogs.com/Joure/p/4337229.html
Copyright © 2011-2022 走看看