美文网首页
Java之多线程和并发

Java之多线程和并发

作者: zhglance | 来源:发表于2020-02-10 15:18 被阅读0次

1.volatile变量

1.1 可见性

volatile修饰符保证volatile变量对所有线程可见,当一个线程修改了volatile变量值之后,其他线程可以立即可见。

主要原理:

a.修改volatile变量,会强制将修改后的值刷新到系统主内存中;
b.修改volatile变量,会导致其他线程工作内存中对应的volatile变量值失效。其他线程再读取该volatile变量值的时候,需要重新从读取主内存中的volatile值。

1.2 有序性

volatile变量的有序性,禁止了JVM的重新排序优化,即线程内表现为串行语义。这一点可普通变量不同,普通变量可能因为因为JVM执行的优化,变量的赋值操作可能和程序中的执行顺序不一致。

1.3 非原子性

volatile变量提供了可见性和有序性,但是并不保证原子性。

2.sleep和 wait 方法区别

相同:两者都可以暂停线程;
不同之处:sleep()没有释放锁,线程会自动苏醒,而 wait()释放了锁,线程不会自动苏醒,需要别的线程调用同一个对象上的 notify() 或者 notifyAll() 方法,通常用于线程间交互/通信 。

相关文章

  • Java之多线程和并发

    1.volatile变量 1.1 可见性 volatile修饰符保证volatile变量对所有线程可见,当一个线程...

  • 高并发Java

    高并发Java(1):前言 高并发Java(2):多线程基础 高并发Java(3):Java内存模型和线程安全 高...

  • Java并发 - 并发编程实战

    Java并发 - 线程Java并发 - 线程池Java并发 - Executor/ExecutorService/...

  • Java笔记之多线程和并发

    本笔记来自 计算机程序的思维逻辑 系列文章 线程 创建线程的方式 继承Thread 实现Runnable接口 属性...

  • Java基础(六)

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

  • Java并发编程(六)阻塞队列

    相关文章Java并发编程(一)线程定义、状态和属性 Java并发编程(二)同步Java并发编程(三)volatil...

  • Java并发编程(四)Java内存模型

    相关文章Java并发编程(一)线程定义、状态和属性 Java并发编程(二)同步Java并发编程(三)volatil...

  • Java并发编程(六)阻塞队列

    相关文章Java并发编程(一)线程定义、状态和属性 Java并发编程(二)同步Java并发编程(三)volatil...

  • Java并发编程(七)ConcurrentLinkedQueue

    相关文章Java并发编程(一)线程定义、状态和属性 Java并发编程(二)同步Java并发编程(三)volatil...

  • Java并发教程

    Java并发教程 Java并发概述Java并发环境设置Java并发主要操作Java并发性线程间通信Java并发同步...

网友评论

      本文标题:Java之多线程和并发

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