文章目录

  • 什么是JUC?
  • JUC包中常常用的到的有哪些?
    • volatile 关键字

什么是JUC?

java5.0 提供了 java.util.concurrent,我们通常称他为JUC包,在本包中新增了一些我们并发编程中常用的一些类,用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中的 Collection 实现。

JUC包中常常用的到的有哪些?

volatile 关键字

volatile 关键字: 当多个线程进行操作共享数据时,可以保证内存中的数据是可见的;相较于 synchronized 是一种
较为轻量级的同步策略;
volatile 不具备"互斥性";
volatile 不能保证变量的"原子性";

// 使用 volatile 之前
public class TestVolatile{public static void main(String[] args){ThreadDemo td = new ThreadDemo();new Thread(td).start();while(true){if(td.isFlag()){System.out.println("########");break;}}}
}class ThreadDemo implements Runnable{private boolean flag = false;public void run(){try{// 该线程 sleep(200), 导致了程序无法执行成功Thread.sleep(200);}catch(InterruptedException e){e.printStackTrace();}flag = true;Sytem.out.println("flag="+isFlag());}public boolean isFlag(){return flag;}public void setFlag(boolean flag){this.flag = flag;}
}
// 解决问题方式一: 同步锁
//   但是,效率太低
public class TestVolatile{public static void main(String[] args){ThreadDemo td = new ThreadDemo();new Thread(td).start();while(true){// 使用同步锁synchronized(td){if(td.isFlag()){System.out.println("########");break;}}}}
}// 解决方式二: 使用 volatile 关键字
public class TestVolatile{public static void main(String[] args){ThreadDemo td = new ThreadDemo();new Thread(td).start();while(true){if(td.isFlag()){System.out.println("########");break;}}}
}class ThreadDemo implements Runnable{private volatile boolean flag = false;private boolean flag = false;public void run(){try{// 该线程 sleep(200), 导致了程序无法执行成功Thread.sleep(200);}catch(InterruptedException e){e.printStackTrace();}flag = true;Sytem.out.println("flag="+isFlag());}public boolean isFlag(){return flag;}public void setFlag(boolean flag){this.flag = flag;}
}

java 中的 JUC相关推荐

  1. JUC学习:java中的各种锁详细介绍

    转自:https://www.cnblogs.com/jyroy/p/11365935.html ,我在网上看到了一篇很好的blog来介绍锁的相关内容,在这记录下来以供后面自己学习 Java提供了种类 ...

  2. 图解Java中那18 把锁

    乐观锁和悲观锁 独占锁和共享锁 互斥锁和读写锁 公平锁和非公平锁 可重入锁 自旋锁 分段锁 锁升级(无锁|偏向锁|轻量级锁|重量级锁) 锁优化技术(锁粗化.锁消除) 乐观锁和悲观锁 悲观锁 悲观锁对应 ...

  3. Java多线程系列--“JUC原子类”01之 框架

    2019独角兽企业重金招聘Python工程师标准>>> Java多线程系列--"JUC原子类"01之 框架 根据修改的数据类型,可以将JUC包中的原子操作类可以分 ...

  4. Java多线程系列--“JUC原子类”03之 AtomicLongArray原子类

    概要 AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray这3个数组类型的原子类的原理和用法相似.本章以AtomicLongArray对数 ...

  5. Java并发编程—JUC的Lock锁

    一.Lock (JUC锁) JUC 锁位于java.util.concurrent.locks包下,为锁和等待条件提供一个框架,它不同于内置同步和监视器. CountDownLatch,CyclicB ...

  6. Java多线程系列--“JUC线程池”06之 Callable和Future

    转载自  Java多线程系列--"JUC线程池"06之 Callable和Future Callable 和 Future 简介 Callable 和 Future 是比较有趣的一 ...

  7. java中审核订单流程图_Java 后端横扫阿里、滴滴、美团总结的面试经验!

    这次面试的公司有一点点多,主要是因为毕业后前两份工作找的都很草率,这次换工作就想着,emm,毕业三年了,该找个工作好好沉淀几年了. 先说下这次面试的结果吧: 到 hr 面的:阿里.美团.滴滴.金山云. ...

  8. Java多线程系列--“JUC锁”05之 非公平锁

    转载自:http://www.cnblogs.com/skywang12345/p/3496651.html点击打开链接 概要 前面两章分析了"公平锁的获取和释放机制",这一章开始 ...

  9. Java多线程系列---“JUC锁”01之 框架

    本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下: 01. Java多线程系列--"JUC锁"01之 框架 02. Java多线程系列--"JUC锁 ...

最新文章

  1. MySql 之 left join 避坑指南
  2. ​Python数据可视化工具怎么选?深度评测5款实用工具
  3. Insertion Loss Return Loss
  4. 琢磨琢磨,while (true) 和 for (;;) 哪个更快?!
  5. CSS3 2D和3D转换 Transform
  6. Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!)
  7. Leetcode--904. 水果成篮
  8. jeesite如何已生成数据的数据源_jeesite 多数据源配置
  9. MongoDB数据库设计中6条重要的经验法则,part 2
  10. fscapture下载收费吗?_如今听歌要收费,下载也要付费,你能接受国内音乐App这种改变吗...
  11. C# TextBox输入校验方法
  12. 问题:import org.springframework.security.authentication.encoding.Md5PasswordEncoder;spring5.已移除
  13. linux其他命令(查找文件、软链接、硬链接)
  14. mybatis-plus批量insert效率低下怎么办(mysql)
  15. (附源码)springboot学生宿舍管理系统 毕业设计 211955
  16. DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution
  17. 华中师范大学 -技术类-- 导师信息
  18. 加拿大滑铁卢大学计算机世界排名,滑铁卢大学世界排名
  19. 2014 Hulu Upfront Updates
  20. mysql_slow_详解MySQL中SlowLog的实际配置

热门文章

  1. 腾讯冯宇彦:基于大数据与人工智能的智慧交通云
  2. nuxt的asyncData在方法内没有办法通过 this调用
  3. 身边的人脸安全:员工用人脸作弊工具打卡,企业该如何防范?
  4. WeGame登录卡死死机无法打开任务管理器只能强制重启的解决方案
  5. Unity 欧拉角万向节锁的原理
  6. 全球与中国光纤输出半导体激光器市场现状及未来发展趋势
  7. pango出现The encodeing of this file is not supported ,file editor try to open it with GB18030
  8. 七巧板平台html5游戏开发之初识物理引擎
  9. 中点画线算法(计算机图形学)
  10. Experimenting with Ingress Controllers on Oracle Container Engine (OKE) — Part 1