zoukankan      html  css  js  c++  java
  • 多线程

    1.多线程:多任务同事进行,如果需要多线程才使用,不需要则无需使用
    优点:提高效率,完善功能
    缺点:开发复杂,可能出现不安全情况

    1.1线程和进程的区别
    1)每个进程都有自己独立的代码和数据空间,内存空间
    2)一类线程共享进程的资源
    3)一个进程包含一到多个线程
    4)进程是资源分配的最小单位
    5)线程是cpu调度的最先单位

    1.2多线程的创建方式
    1)继承Thread类,重写run()方法+start()开启多线程
    2)实现Runnable接口,重写run()方法 --- 推荐使用
    a.避免了单继承的局限性
    b.实现资源共享
    3)实现Callable接口,重写call方法
    a.使用麻烦
    b.抛出异常,具有返回值

    2.线程的状态
    新生:new Thread(),创建一个线程
    就绪:start(),就绪不是运行,就绪状态的线程会处于就绪队列当中,等待cpu的调度
    运行:当cpu为某个线程分配时间片,这个线程开始执行
    阻塞:sleep(),阻止线程的正常执行,等待阻塞解除
    终止:线程结束

    注意:
    1)如果一个线程一旦终止,没有办法恢复,就算重新开始也不是原来的线程
    2)阻塞状态解除,没有办法直接恢复运行状态,都会进入就绪状态

    如何使线程进入到终止状态
    1)执行完毕 2)通过外部干涉 3)调用stop()|destory() 4)调用外部标识判断

    如何使线程进入到就绪状态
    1)start()
    2)阻塞状态解除直接进入就绪状态
    3)yield()礼让线程,静态方法-->可以放大对方执行的可能性
    4)线程切换,被切换的线程直接进入就绪状态

    如何使线程进入到阻塞状态
    1)sleep()
    2)join() 插队线程 | 合并线程
    3)wait()
    4)IO操作

    sleep(毫秒数) 线程睡眠,静态方法
    可以放大问题发生的可能性
    模拟网络延迟
    使程序进入阻塞状态,让出cpu的资源,如果遇到对象锁的情况,sleep()抱着对象资源睡觉,不会释放对象锁

    2.1线程的状态 getState() 返回枚举类型的状态信息
    优先级: 提高|降低可能性,不能取决定性作用
    1~10之间的数字表示线程的优先级 1最小 10最大 默认是5
    static int MAX_PRIORITY:-->线程可以具有的最高优先级
    static int MIN_PRIORITY:-->线程可以具有的最低优先级
    static int NORM_PRIORITY:-->分配给线程的默认优先级
    setPriority()设置线程的优先级别
    getPriority()获取线程的优先级别

  • 相关阅读:
    PHPCMS V9生成静态地址绝对路径改为相对路径的方法
    python常识系列21-->一个不能不用的python日志模块**nb_log**
    python常识系列20-->python利用xlutils修改表格内容
    单元测试框架杂记02-->unittest结合requests时报一个警告
    修改element的NavMenu 导航菜单组件样式
    算法-04 | 贪心算法
    算法-05 | 二分查找
    数据结构-07| 堆
    数据结构-06| 字典树| 并查集
    数据结构-05| 布隆过滤器| 缓存机制
  • 原文地址:https://www.cnblogs.com/jj-01/p/11204905.html
Copyright © 2011-2022 走看看