• java——线程


    线程与进程

    1.线程:程序中单独顺序的控制流

        线程本身是通过程序进行运行

        线程是程序中的顺序控制流,只能使用分配给程序的资源与环境

    2.进程:执行中的程序

        一个进程可以包含一个或多个线程

        一个进程至少要包含一个线程

    3.单线程:程序中只存在一个线程,实际上主方法就是一个线程

    4.多线程:多线程是一个程序中执行多个任务

         多线程目的是更好地使用CPU资源

    线程的实现

    1.继承Thread类

    2.实现Runnable接口

    Thread类在java。lang包中定义,继承Thread必须重写run()

    Runnable接口最后还是要调用Thread执行

    线程的状态

    创建状态:准备好了一个多线程对象

    就绪状态:调用start(),等待CPU进行调度

    运行状态:执行run()

    阻塞状态:暂停执行,可能将资源交给其他线程使用

    终止状态(死亡状态):线程销毁

    常用方法:

    取得线程名称:getName()

    取得当前线程对象:currentThread()   ----->currentThread().getName  获取当前线程名称

    判断线程是否启动:isAlive()

    线程强制运行:join()

    线程休眠:sleep()

    线程礼让:yield()  执行到指定条件(比如说大于10),暂停当前线程,让其他线程执行

    中断线程:interrupt()

    线程暂停:wait()

    唤醒线程:notify()       notifyAll()

    线程优先级:

    xxxxxx.setPriority(你想要设置的优先级)

    优先级范围是1~10,越大越优先(更可能最先执行,不是一定最先执行),默认为5

    MAX_PRIORITY    10

    MIN_PRIORITY    1

    NORM_PRIORITY    5

    生命周期:

    线程池:

    为什么要用线程池???

    假设服务器完成一项任务所需时间为: 创建线程--T1

                        执行任务--T2

                        销毁线程--T3

    if(T1+T3)远大于T2,建议使用线程池

    线程池包括以下组成部分:

    1.线程池管理器:用于创建并管理线程(创建、销毁、添加新任务)

    2.工作线程:线程池中的线程,在没有任务时处于等待状态,可以循环地执行任务

    3.任务接口:每个人物必须实现的接口,以供工作现场调度执行任务,

    主要规定了任务的入口,任务执行后的收尾工作,任务的执行状态等...

    4.任务队列:用于存放没有处理的任务,提供一种缓冲机制

  • 相关阅读:
    html5画饼形图
    jqGrid添加详细按钮,单击弹出窗体
    Groovy的MOP和元编程学习笔记(超级牛逼的功能)
    使用PowerMockito和Mockito进行模拟测试,包括静态方法测试,私有方法测试等,以及方法执行的坑或者模拟不成功解决
    mysql 索引无法使用问题
    float/double 浮点数据*100精度丢失问题
    使用Groovy的sql模块操作mysql进行多种查询
    groovy与java中的多方法
    fastdfs+nginx集群高可用搭建的一些坑!!记录一下
    keepalived vrrp_script脚本不执行解决办法
  • 原文地址:https://www.cnblogs.com/guojia314/p/10094550.html
Copyright © 2020-2023  润新知