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

  • 相关阅读:
    软件的命名方式
    游戏软件的发展和特点
    第一章 【概论】练习与讨论 第二题
    进行博客博文管理的设计
    可视化编程是否会慢慢取代目前的主流编程
    第二次作业(软件工作量的估记方法)
    第一次作业
    string字符串格式化成time_t,并计算2个time_t的时间差
    CSV简单解析与排序输出
    jqchart总结
  • 原文地址:https://www.cnblogs.com/jj-01/p/11204905.html
Copyright © 2011-2022 走看看