共享性

多线程操作同一个数据,产生线程安全问题

新建一个类ShareData

设计一个int 型的成员变量count

设计一个成员方法addCount(),把count变量++

在main函数中开启多个线程操作这个成员变量,在main函数里

获取ShareData对象,new 出来

使用for循环10次,在循环中开启线程,模拟10个线程并发,在循环内

获取Thread对象,new出来,构造函数参数:Runable对象

匿名内部类实现Runable接口,重写run()方法

调用Thread.sleep(1000),使线程睡眠一秒,增加出现问题的概率

使用for循环100次,调用addCount()方法

调用Thread.sleep(3),主程序睡眠3秒,保证上面的线程全部执行完了

打印count变量

调用Thread对象的start()方法

package com.tsh.mthread;public class Home {public int count;public static void main(String[] args) {final Home home = new Home();for (int i = 0; i < 10; i++) {Thread t = new Thread(new Runnable() {@Overridepublic void run() {for (int j = 0; j < 100; j++) {home.addCount();}try {Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();}System.out.println(Thread.currentThread()+":"+home.count);}});t.start();}// 睡三秒等等上面的try {Thread.sleep(3000);} catch (Exception e) {e.printStackTrace();}System.out.println("总计:" + home.count);}public void addCount() {count++;}
}

互斥性

使用synchronized关键字修饰上面的addCount()方法,当前线程操作时加把锁,同时只允许一个访问者对资源进行访问,具有唯一性和排他性

    public synchronized void addCount() {count++;}

使用synchronized修饰代码块

    public void addCount() {synchronized (this) {count++;}}

转载于:https://www.cnblogs.com/taoshihan/p/5431636.html

[javaSE] 看博客学习java并发编程相关推荐

  1. java 并发编程视频教程_全面深入学习java并发编程,视频教程下载

    课程目标: * 颠覆一些你以为"正确"的认知,纠正其它同类视频的错误 * 100+ 张手绘图 & 流程图,帮助你形成正确的"多线程世界观" * 以知识点 ...

  2. 如何学习Java并发编程

    只要从事JAVA开发的小伙伴们,都会或多或少地接触到并发编程.对于初学者来说,这一部分内容比较晦涩难懂,并且嵌入了很多新技术.本篇博文旨在为小伙伴们提供学习Java并发编程的指导性建议.当然,这仅仅是 ...

  3. 如和学习java并发编程

    伟大的<java编程思想>曾经说过,(原谅我用伟大这两个字,确实是博主看过的关于Java最好的书,也是这本书,让我对java有了全新的理解) 学习java并发就像进入了另外一个学习领域,就 ...

  4. Java并发编程 基础知识学习总结

    Java并发编程一直是Java程序员必须懂但又是很难懂的技术内容,这部分的内容我也是反复学习了好几遍才能理解.本篇博客梳理一下最近从<Java 并发编程的艺术>和他人的博客学习Java并发 ...

  5. 学习笔记:Java 并发编程①_基础知识入门

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...

  6. Java并发编程(中下篇)从入门到深入 超详细笔记

    接上一篇博客笔记:Java并发编程(中上篇)从入门到深入 超详细笔记_未来很长,别只看眼前的博客-CSDN博客https://blog.csdn.net/weixin_53142722/article ...

  7. 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )

    文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...

  8. 【Java 并发编程】线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingleThreadExecutor )

    文章目录 前言 一.线程池示例 二.newCachedThreadPool 线程池示例 三.newFixedThreadPool 线程池示例 三.newSingleThreadExecutor 线程池 ...

  9. 【极客时间】《Java并发编程实战》学习笔记

    目录: 开篇词 | 你为什么需要学习并发编程? 内容来源:开篇词 | 你为什么需要学习并发编程?-极客时间 例如,Java 里 synchronized.wait()/notify() 相关的知识很琐 ...

最新文章

  1. php如何读写excel
  2. 哥调的不是车,是寂寞
  3. 设计前沿:16款扁平风格 iOS 7 图标设计
  4. 正则表达式之python3版
  5. Logger.getLogger和 LogFactory.getLog
  6. 真的,太多人辜负了.NET5!
  7. 发一个flash+PHP的简单上传代码
  8. 计算机专业联考335分,联考专业分、文化分达到多少能过本科线(附2019年美术高考分数线汇总...
  9. jquery动态绑定事件的方法_Jquery绑定事件及动画效果
  10. centos7将网卡名字改成eth样式
  11. c# 打开的窗口显示在最前面_了解各种切换程序窗口的方法,提高工作效率
  12. Python中lambda表达式的常见用法
  13. CentOS7系列离线安装指定软件及升级系统
  14. 都说互联网寒冬,有人却获一线大厂六枚Offer,他是怎么做到的?
  15. kotlin官方文档中文翻译(二) 基础内容
  16. Pycharm设置一种好看的皮肤/主题
  17. 程序员方式原生表白网页
  18. 程序员写代码也存在本手、妙手、俗手
  19. Gstreamer说明
  20. 5G千兆工业路由器 poe供电

热门文章

  1. Python(27)-模块
  2. Spring Cloud 学习笔记(2 / 3)
  3. STL源码剖析 内存基本处理工具 初始化空间的五个函数
  4. OpenCore 的代码结构
  5. 编程:休息片刻的好处
  6. 强制更新 maven 缓存
  7. centos7 安装 node.js 运行环境、卸载
  8. 写给大数据开发初学者的话3
  9. Django ORM 知识点总结
  10. java自定义注解学习笔记