A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-4-26 17:16 编辑

多线程笔记



多线程
  • 进程:Process, 当前正在运行的程序,专业表述:一个应用程序在内存中的执行区域.
  • 线程: Thread, 进程中的一个执行控制单元,也叫执行路径
    • 一个进程可以有一个线程,单线程---->安全性高,但是效率低
    • 一个进程也可以有多个线程,多线程 ---->安全性低,但是效率高

  • 并发:并行发生
  • 同步:sync,注意并不是同事的意思,同步是指一步接一步的执行,一个执行完毕再开始执行下一个,
    • 单线程就是同步

  • 异步: async,不是一步一步执行,而是同时执行多步,每个步骤何时结束不确定
    • 多线程就是异步

  • 同一个线程内的代码是同步执行的,不同线程的代码是异步执行的
  • 阻塞:

创建线程的第一种方式:创建一个类继承Thread类,该子类重写了Thread类的run()方法,
  • Thread类的成员方法
    • String getName();获取此线程的名字
    • void setName(String s);设置此线程的名字,构造方法创建的是线程的对象

  • CPU执行程序的随机性,(在每个启动程序之间做着来回高速的随机切换,)执行的单一性(CPU只能同时执行一个进程中任务,为了不卡顿,就高速切换,随机执行已启动程序,实现多个程序同时进行的目标),
  • 主方法(main)是单线程的
  • 在类中调用当前类的方法,直接写方法名,不用对象来调,
  • 共享资源容易出现问题,问题的原因就是CPU的随机机制.
  • 同步代码块解决线程共享资源的问题. synchronized 关键字(同步:)
  • 问题出现原因:
    • 要有多个线程
    • 要有被多个线程所共享的数据
    • 多个线程要并发(同时发生)地访问共享的数据

  • synchronized:同步,可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,则直接锁住,其他的线程将无法访问.

    • 格式:
    • synchronized(锁对象) {

    }
  • 注意:
    • 锁对象需要被所有的线程共享

  • 同步的优缺点:
    • 安全性高
    • 效率低

  • 异步的优缺点
    • 效率高
    • 安全性低

  • 同步方法:使用关键字synchronized修饰的方法,一旦被一个线程访问,则整个方法全部锁住,其他线程无法访问
    • 非静态同步方法:锁对象是this.
    • 静态同步方法: 锁对象是当前类的字节码对象




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马