美文网首页后端开发
【三】多线程

【三】多线程

作者: 吴里庆庆 | 来源:发表于2018-02-27 21:40 被阅读0次

1.Thread

  • extends Thread

2.Runnable

  • implements Runnable

3.两者初步理解

  • 任务管理器中设置相关性(为于演示理解)
    • 选一个cpu(运行多线程要在一个CPU上运行)
  • Java语言中只能继承一个类,所以Thread单根继承,但如果继承了它 应用就不好继承其它类了
  • Java可以实现多个接口,所以一般场景多选择实现Runnable。
  • 启动一个线程一定要调用它的start方法,而不能调用它的run方法。
  • 一个线程对象不可以start(启动)两次

4.线程生命周期

  • 正常曲线:新建→就绪→运行→死亡
  • 非正常:运行→堵塞→就绪→运行

5.抢占式(多)、设置优先级、后台线程学习

6.线程让步

  • yield()
    • 要想线程让步:(必须满足下面两个条件)
      • 1.存在另外的线程优先级大于等于我
      • 2.另外的线程处于就绪状态

7.参与

  • join()
    • join线程 让其他进程参与 自己处于堵塞状态 直到其他结束再执行

8.线程同步

  • synchronized
    • public synchronized void run() {}//1.同步方法
    • synchronized (this){}//2.同步代码块
  • 释放锁(持有锁的线程在以下情况会释放锁:)
    • 1.执行完同步代码块
    • 2.执行同步代码块的过程中,遇到异常而导致线程终止
    • 3.在执行同步代码块的过程中,执行了锁所属对象的wait()方法
    • ★执行sleep()和yield()都不会释放锁

9.线程通信

代码

  • wait()
    • 执行该方法的线程释放对象的锁,Java虚拟机把该线程放到该对象的等待池中。该线程将等待其他线程将其唤醒。
  • notify()
    • 执行该方法的线程唤醒在对象的等待池中等待的一个线程。Java虚拟机从对象等待池中随机选择一个线程,把它转到对象的锁池中。
  • notifyAll()
    • Object类还有一个notifyAll()方法,该方法将会唤醒所有在这个对象锁池中的所有线程。

10.生产者消费者案例

相关文章

  • iOS多线程全面解读(三):NSOperation

    iOS多线程全面解读(三):NSOperation iOS多线程全面解读(三):NSOperation

  • Python-day-18多线程

    1、多线程技术1 二、多线程技术2 三、多线程应用 四、jion函数

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • day18-多线程

    recode 一、多线程技术1 二、多线程技术2 三、client 多线程应用 四、join函数 耗时操作

  • Java多线程 ----(1)多线程基础

    1、什么是多线程和使用多线程的意义2、多线程基础知识点框架图3、实现多线程的三种方式4、三种方式对比 1、什么是多...

  • iOS基础知识 (三)

    多线程 多线程创建方式 iOS创建多线程方式主要有NSThread、NSOperation、GCD,这三种方式创建...

  • Java一多线程

    目录: 一、进程与线程的概念 二、多线程的概念 三、多线程所存在的问题(线程安全问题、上下文切换) 四、多线程的三...

  • 多线程

    iOS多线程简介 1、iOS有三种多线程技术NSThread、NSOperation、GCD。三种方式依次抽象程度...

  • 浅谈iOS中多线程开发

    目录: (一)线程与进程之间的区别 (二)为什么需要学习多线程 (三)多线程任务执行方式 (四)多线程执行的...

网友评论

    本文标题:【三】多线程

    本文链接:https://www.haomeiwen.com/subject/owcvxftx.html