美文网首页
多线程笔记1-线程的共享与协作

多线程笔记1-线程的共享与协作

作者: tangYaXin | 来源:发表于2020-05-17 17:01 被阅读0次

什么是多线程的共享? 什么是多线程之间的协作?

多线程的共享:是指多个线程访问同一个对象。

多线程的协作是指:当A线程需要执行的操作依赖于B线程,这时候A线程需要B线程执行完成之后通知A线程来执行。所谓多个线程之间的协作,来完成任务。使用的方法(在内置锁中)为wait()和notify(),notifyAll();这3个方法都是Object中的方法。 显示锁Lock,需要Load接口方法的newCondition()来获取Condition的实例,调用condition.await()  condition.signal()与signalAll(). 需要注意的是,内置锁的方式尽量使用notifyAll()来唤醒线程。

因为notify()方法只能唤醒某一个线程,且不能指定哪一个线程。 显示锁的方式尽量使用signal(),因为通过newCondition()方式可以获取多个不同的Condition实例,从而实现业务逻辑。

等待与唤醒的标准范式

等待方

synchronized(对象){

while(条件不满足){

wait();

}

执行业务逻辑

}

通知方

synchronized(对象){

执行相关的逻辑。将条件设置为满足

notifyAll()

}

以上为等待唤醒机制的标准范式,可以看到,等待方和通知方执行操作时都是会拿锁的,为什么要还这么写呢?因为wait是会释放当前的锁的,notifyAll()不会释放锁,只有在synchronized关键字所包含的代码块执行完成之后才会释放锁。

相关文章

  • 多线程笔记1-线程的共享与协作

    什么是多线程的共享? 什么是多线程之间的协作? 多线程的共享:是指多个线程访问同一个对象。 多线程的协作是指:当A...

  • Java并发之JDK并发包(1)

    实战Java高并发程序设计笔记 多线程的团队协作:同步控制 synchronied的功能扩展:重入锁 简单使用,与...

  • 多线程使用小结

        在多线程编程中,解决线程之间的协作、数据共享等问题,不可避免需要用到volatitle、synchroni...

  • JAVA 多线程与锁

    JAVA 多线程与锁 线程与线程池 线程安全可能出现的场景 共享变量资源多线程间的操作。 依赖时序的操作。 不同数...

  • 4.线程通信

    线程协作-JDK API JDK中对于需要多线程协作完成某一任务的场景,提供了对应API支持。多线程协作的典型场景...

  • 高并发(6)- 多线程之间的协作

    @[TOC](高并发(6)- 多线程之间的协作) 前言 线程的协作 一、什么是线程的协作顾名思义,线程的协作就是多...

  • Java多线程开发(二)| 多线程的竞争与协作

    0. 前言 使用多线程的过程中,主要要解决的是两类问题: 多个线程共享资源 多个线程的协作 线程就像独立的个体,每...

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

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

  • 原子类型与原子操作

    原子类型和原子操作 并行编程、多线程与C++11 常见的并行编程有多种模型:共享内存、多线程、消息传递等。 多线程...

  • 年薪50W阿里P7架构师必备知识:并发+JVM+多线程+Nett

    并发编程 线程基础、线程之间的共享和协作一 线程基础、线程之间的共享和协作二 线程的并发工具类 线程的并发工具类、...

网友评论

      本文标题:多线程笔记1-线程的共享与协作

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