• 多线程


    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()获取线程的优先级别

  • 相关阅读:
    Step by step Dynamics CRM 2013安装
    SQL Server 2012 Managed Service Account
    Step by step SQL Server 2012的安装
    Step by step 活动目录中添加一个子域
    Step by step 如何创建一个新森林
    向活动目录中添加一个子域
    活动目录的信任关系
    RAID 概述
    DNS 正向查找与反向查找
    Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs
  • 原文地址:https://www.cnblogs.com/jj-01/p/11204905.html
Copyright © 2020-2023  润新知