zoukankan      html  css  js  c++  java
  • JAVA 面向对象 多线程

    1.进程:应用程序的执行实例,有独立的内存空间和系统资源

     进程是系统运行程序的基本单位,每一个进程的内部数据和状态都是完全独立的。

    2.线程:CPU调度和分派的基本单位,进程中执行计算的最小单位,可完成一个独立的顺序控制流程

    3.什么是多线程?
    如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”

    4.多线程好处
    充分利用CPU资源;简化编程模型;带来良好的用户体验

    5.Thread类
    Java提供了java.lang.Thread类支持多线程编程

    6.主线程
    main()方法即为主线程入口
    产生其他子线程的线程
    必须最后完成执行,因为它执行各种关闭动作

    7.在Java中创建线程的两种方式
    继承java.lang.Thread类:编写简单,可直接操作线程;适用于单继承
    实现java.lang.Runnable接口:避免单继承局限性;便于共享资源

    8.使用线程的步骤
    定义线程——创建线程对象——启动线程——终止线程

    9.线程的状态
    创建状态、就绪状态、运行状态、阻塞状态、死亡状态
    进程的状态:就绪状态、运行状态、等待状态

    10.线程调度

    线程调度指按照特定机制为多个线程分配CPU的使用权
    方法 说明
    setPriority(int  newPriority) 更改线程的优先级
    static void sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠
    void join() 等待该线程终止
    static void yield() 暂停当前正在执行的线程对象,并执行其他线程
    void interrupt() 中断线程
    boolean isAlive() 测试线程是否处于活动状态

    11.线程优先级

    线程优先级由1~10表示,1最小,5为默认优先级
    优先级高的线程获得CPU资源的概率较大

    12.线程休眠

    让线程暂时睡眠指定时长,线程进入阻塞状态
    睡眠时间过后线程会再进入可运行状态
    public static void sleep(long millis)
    millis为休眠时长,以毫秒为单位
    调用sleep()方法需处理InterruptedException异常

    13.线程的强制运行
    使当前线程暂停执行,等其他线程结束后再继续执行本线程

    14.线程的礼让
    暂停当前线程,允许其他具有相同优先级的线程获得运行机会
    该线程处于就绪状态,不转为阻塞状态
    只是提供一种可能,但是不能保证一定会实现礼让

    15.多线程共享数据引发的问题

    多个线程操作同一共享资源时,将引发数据不安全问题

    16.同步方法

    17.线程安全的类型
    方法是否同步 效率比较 适合场景
    线程安全 是 低 多线程并发共享资源
    非线程安全 否 高 单线程

    18.常见类型对比
    Hashtable && HashMap
    Hashtable 继承关系:实现了Map接口,Hashtable继承Dictionary类
    线程安全,效率较低
    键和值都不允许为null
    HashMap 继承关系:实现了Map接口,继承AbstractMap类
    非线程安全,效率较高
    键和值都允许为null
    StringBuffer && StringBuilder
    前者线程安全,后者非线程安全

  • 相关阅读:
    js 类对象
    图片自动轮播及点击图标切换图片
    js 常用方法
    js-案例 国家-省市-区域之间的三级联动
    JS 基础知识之传智播客2
    JS 基础知识之传智播客1
    div居中
    formatDate 格式化日期 ,给小于10的月日,加0,如01 02 03
    Radiobutton改成文字样式
    如何在Android平台下进行Socket通信
  • 原文地址:https://www.cnblogs.com/zjx-959/p/13043980.html
Copyright © 2011-2022 走看看