• Java


    Java - 多线程
        > 线程的两种实现方式:
            > 继承(extends) Thread 类
            > 实现(implements) Runnable 接口
        > 继承与实现的区别和联系
            > public class Thread implements Runnable
            > 实现避免了java中单继承的局限性,所以最好用实现的方式实现多线程(比如在多个线程操纵同一个
               资源的情况,使用实现接口方式只需要 new 一个对象就可以了)
        > 使用多线程的优点:
            1、提高程序执行速度,对图形化界面更有意义,可增强用户体验
            2、提高计算机系统CPU的利用率
            3、改善程序结构,将既长又复杂的进程分为多个线程,独立运行,利于理解和修改
     
    一、线程的分类:
        > 用户线程
        > 守护线程:用它来服务用户线程的,通过在start()方法前调用thread.setDaemon(true)可以把一个用
           户线程编程守护线程, Java垃圾回收机制就是典型的守护进程
        > 若 JVM 中都是守护进程,则当前 JVM 将退出
     
    二、线程的生命周期
    1、新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态
    2、就绪:处于新建状态的线程被 start() 之后,将进行线程队列等待 CPU 时间片,此时已具备运行条件
    3、运行:当就绪的线程被调度并获得处理器资源时,进入运行状态,run() 方法定义了线程的操作和功能
    4、阻塞:被人为挂起或执行输入输出操作时,让出CPU 并临时中止自己的执行,进入阻塞状态
    5、死亡:线程完成了他的全部工作或线程被提前强制性的中止
        > 图示
            
     
     
    三、线程的同步机制
    1、方式一:同步代码块
        > Synchronized的使用方法:
        synchronized(同步监视器){
            // 操作共享资源的代码(被同步的代码块)
        }
            > 同步监视器:由一个类的对象来充当,哪个线程获取此监视器,哪个线程就可以执行大括号里的代码
     
    2、方式二:同步方法
        > 将操作共享数据的方法声明为 synchronized,即此方法为同步方法,能够保证当其中一个线程执行
           此方法时,其他线程在外等待直至此线程执行完此方法
     
    四、线程通信
        > wait():令当前线程挂起并放弃CPU、同步资源,使别的线程可访问并修改共享资源,而当前线程排队
                        等候再次对资源的访问 
        > notify() :唤醒正在排队等待同步资源的线程中优先级最高者结束等待
        > notifyAll():唤醒正在排队等待资源的所有线程结束等待
        > java.lang.Object 提供的这三个方法只能在 synchronized 方法或 synchronized 代码块中才能使用,否
           则会报 java.lang.illegaMonitorStateException 异常
  • 相关阅读:
    XML Schema
    String.Format格式说明(转)
    Init,Load,PreRender事件执行顺序
    ASP.NET Web Form 的“连续”和“有状态”假象 (转)
    Windows Phone的网络连接策略(转)
    JAVA获取图片大小和尺寸【转】
    Head First Servlet and JSP 笔记 JSP 部分 (未完待续)
    修复Xcode升级错误 — PCH File Error【转】
    java_时间戳与Date_相互转化相关函数【转】
    Head First Servlet and JSP 笔记 Servlet 部分
  • 原文地址:https://www.cnblogs.com/kafeibuku/p/4988307.html
Copyright © 2020-2023  润新知