关于synchronized有趣的同步问题
作者:李灿辉 发布时间:2021-11-03 05:46:55
标签:java,synchronized
在多线程对一个整数进行自增操作时,需要用synchronized进行同步。然而,如果synchronized的对象选取的不合适的话,就无法实现同步的效果。如下面的例子。
public class SyncThreadTest extends Thread {
public static Integer count = 0;
private static final int TIMES = 10000;
public SyncThreadTest(){
super("SyncThread");
}
@Override
public void run(){
synchronized (count){
for (int i = 0; i < TIMES; i ++){
count++;
}
}
}
public static void main(String[] args) throws InterruptedException{
SyncThreadTest t1 = new SyncThreadTest();
SyncThreadTest t2 = new SyncThreadTest();
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println(count);
}
}
在上面的例子中,选取了自增的变量作为同步的对象。启动2个线程,各自对count自增10000次。最后的结果,count的值却不是20000次。
原因在于count对象一直处于改变当中,起不到两个线程的锁的作用。
来源:https://blog.csdn.net/li_canhui/article/details/83108478
0
投稿
猜你喜欢
- 1.map遍历快速实现边距,文字自适应改变大小Container( // padding: EdgeI
- 冒泡排序算法演示图:public static void bubbleSort(int[] array) { &
- springboot 针对jackson是自动化配置的,如果需要修改,有两种方式:方式一:通过application.yml配置属性说明:#
- 一、什么是ImportBeanDefinitionRegistrarImportBeanDefinitionRegistrar接口是也是sp
- 1.会话会话: 用户打开了一个浏览器,点击了很多超链接,访问多个web次元,关闭浏览器,这个过程可以称之为会话有状态会话: 带有访问记录的会
- 概述HashTable是jdk 1.0中引入的产物,基本上现在很少使用了,但是会在面试中经常被问到,你都知道吗:HashTable底层的实现
- 作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们带着以下三
- 【前言】面向资源的 Restful 风格的 api 接口本着简洁,资源,便于扩展,便于理解等等各项优势,在如今的系统服务中越来越受欢迎。.n
- 目录MVC结构简介SpringMVC简介SpringMVC执行流程常用注解1. @Controller2. @ResponseBody3.
- 我们编程的过程中大部分使用了很出色的ORM框架,例如:MyBatis,Hibernate,SpringJDBC,但是这些都离不开数据驱动JD
- 背景介绍公司最近做分库分表业务,接入了 Sharding JDBC,接入完成后,回归测试时发现好几个 SQL 执行报错,关键这几个表都还不是
- 先说一下对异步和同步的理解:同步调用:调用方在调用过程中,持续等待返回结果。异步调用:调用方在调用过程中,不直接等待返回结果,而是执行其他任
- Result也是Struts2比较重要的一部分,在Result的配置中常用的有四种类型:dispatcher、redirect、chain和
- Java包装类基本类型大小包装器类型boolean/Booleanchar16bitBooleanbyte8bitByteshort/16b
- Spring JPA 增加字段执行异常用Spring jpa Entity里面增加了几个字段,但启动报错,提示column Unable t
- 一、使用maven加载依赖加载了连接数据库的依赖、mybatis的依赖以及lombok的依赖<dependency>  
- Maven Release当我们的项目达到了当前的目标,在经过检测后不需要改变。这时我们就需要将SNAPSHOT版本打包成RELEASE版本
- 本文实例为大家分享了java数字转汉字工具类的具体代码,供大家参考,具体内容如下/** * Created by 33303 on 2017
- 本文实例为大家分享了Unity实现俄罗斯方块的具体代码,供大家参考,具体内容如下一、使用SpriteRenderer作为小方块图片,创建7种
- 介绍: Mybatis-Plus(简称MP)