• 多线程__【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);
    		}
    	}
    }




  • 相关阅读:
    Format中的转换说明符
    网络通信数据包与串口通信数据包异同:
    指针容器的类型和用法
    cimge 这次能够图片大小尺寸
    三分钟快速上手TensorFlow 2.0 (后续)——扩展和附录
    三分钟快速上手TensorFlow 2.0 (下)——模型的部署 、大规模训练、加速
    三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署
    三分钟快速上手TensorFlow 2.0 (上)——前置基础、模型建立与可视化
    检查自己的numpy是否有依赖blas
    TensorFlow 2.0快速上手指南12条
  • 原文地址:https://www.cnblogs.com/Joure/p/4337229.html
Copyright © 2020-2023  润新知