美文网首页
[Java]多线程

[Java]多线程

作者: 芒果奶油卷 | 来源:发表于2019-10-11 17:32 被阅读0次

#### 10.多线程

①理解程序、进程、线程的概念

程序可以理解为静态的代码

进程可以理解为执行中的程序

线程可以理解为进程的进一步细分,程序的一条执行路径

②创建java程序的线程

方式一:继承于Thread类

方式二:实现Runnable接口

③两种方式的对比:联系:class Thread implements Runnable

比较哪个好?实现的方式较好。

①解决了单继承的局限性。

②如果多个线程有共享数据的话,建议使用实现方式,同时,共享

数据所在的类可以作为Runnable接口的实现类。

④线程里的常用方法:

start() run() currentThread() getName() setName(String name) yield() join() sleep()

isAlive() getPriority() setPriority(int i) wait() notify() notifyAll()

⑤线程的生命周期

新建---(start)---就绪-----(获取CPU/失去CPU执行权)运行-----(正常执行结束;Error/Exception未处理;stop)死亡

运行-----(sleep;等待同步锁;wait/join;suspend,即挂起)---阻塞

阻塞-----(sleep时间到;获取同步锁;notify/notifyAll;resume,即释放)----就绪

⑥线程同步

1.存在原因:

由于一个线程在操作共享数据时,未执行完毕的情况下,了另外的线程参与进来,导致共享数据存在了安全问题

2.解决办法

必须让一个线程操作共享数据完毕后,其他线程才有机会参与共享数据的操作

3.JAVA实现线程安全------线程同步

方式1:同步代码块

synchronized(同步监视器){

//需要被同步的代码块

}

1.共享数据:多个线程共同操作一个数据

2.同步监视器:由一个类的对象来充当,哪个线程获取此监视器,谁流执行被同步的代码块,

俗称,锁(任何类的对象都可充当该锁)。但是该锁在多线程中必须唯一.

在一般方法内,可以使用this;在静态方法内,使用当前类本身充当锁

方式2:同步方法

将共享数据的方法声明为synchronized,即此方法为同步方法,能够保证当一个线程执行此方法时,其他线程在外等待,直至次线程完成方法

⑦线程的通信

wait;notify;notifyAll 这三者只有在synchronized方法或代码块中使用,否则出现java.lang.IllegalMonitorStateException

wait():当在同步中,执行到此方法,则此线程“等待”,直至其他线程执行notify()的方法,将其唤醒,唤醒后继续其wait()后的代码

notify()/notifyAll():在同步中,执行到此方法,则唤醒其他的某一个或所有的被wait的线程。

相关文章

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

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

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

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

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

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

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三) 什么是线程间的协作 线程之间...

  • Java基础(六)

    多线程 Java多线程并发 1.1 JAVA 并发知识库 1.2 JAVA 线程实现/创建方式 1.2.1 继承 ...

  • (五) volatile关键字

    Java多线程目录 1 背景 理解Java多线程的内存抽象逻辑请阅读java多线程内存模型,当代操作系统,处理器为...

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

网友评论

      本文标题:[Java]多线程

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