关于在多线程环境中使用同步,我需要一些澄清.我在下面有一个小例子类.但我实际上发现很难做出以下内容如何工作的测试用例;我想要测试用例的原因是要了解同步如何处理这些不同的场景

>如果一个线程调用SharedResource.staticMethod,它将获取该类的锁.它是否意味着一个SharedResource的实例,比如x,必须等到它被锁定到exectute x.staticMethod.

>将在块中同步此操作,获取代码的该部分或整个对象的锁定.即另一个线程可以在同一个对象上调用相同的方法;但执行不属于同步块的其余代码

>如果上述观点为真,那么使用虚拟对象锁定不会提供任何额外的好处.正确?

>因此有不同级别的同步.类级别,对象级别,方法级别和块级别.这意味着应该存在这些个别关卡的锁?

如果我获取了对象的锁,另一个Thread不能调用同一个对象上的任何方法,但是如果我获取了该方法的锁,则另一个线程可以获取另一个方法的锁.它是否正确?

关于如何创建作用于同一对象和相同方法的两个线程的一些提示将有所帮助(我理解我需要扩展Thread类或实现Runnable接口).但不确定如何让两个线程在同一个对象上调用相同的方法.

class SharedResource {

public Integer x =0;

public static Integer y=0;

Object dummy = new Object();

public Integer z=0;

public synchronized static void staticMethod(){

System.out.println("static Method is called");

y++;

}

public synchronized void incrementX(){

System.out.println("instance method; incrementX");

x++;

}

public void incrementXBlock(){

synchronized(this){

x++;

}

System.out.println("instance method; incrementXBlock");

}

public void incrementZ(){

synchronized (dummy) {

z++;

}

System.out.println("synchronized on dummy; incrementZ method ");

}

}

public class ThreadSynchronization extends Thread {

}

我已经阅读过这些帖子,但如果我清楚地理解这些帖子,我就不是肯定的.

java类同步_Java中方法,对象,类的同步相关推荐

  1. java 继承 意义_Java中继承,类的高级概念的知识点

    1.继承含义 在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance). 2.继承的优点 A.代码的可重用性 B.子类可以扩展父 ...

  2. java 字符串掐头去尾_java中常见的类

    简介 类层次结构最顶层的基类,所有类都直接或间接继承自Object类,所以,所有的类都是以恶个Object(对象) 构造方法 Object: 构造一个对象,所有子类初始化时都会优先调用该方法 常用的成 ...

  3. java中类模型_java中的数据模型类

    packagecom.aaa.zxf.ajax.test;importjava.io.Serializable;/*** java中的继承. * * 一.数据模型类 * 数据模型类:用来存取数据库数据 ...

  4. java 大数实现_Java中的大数类简单实现

    Java中的大数类简单实现 Java中的大数还是挺好用,而且很方便,所以将其罗列如下,以备使用 import java.math.*; import java.util.*; //基本使用如下: x ...

  5. java 传入参数_Java 中方法参数的传递

    java中方法参数传递看似有两种,值传递和引用传递.而实际上都是值传递. 所谓值传递,传递的是变量的副本就是说,在将变量a作为参数传进方法中时,方法中接收到的是a的副本,在方法中对参数的修改实际上修改 ...

  6. java内容寻址_java – 获取方法对象而不按名称寻址方法

    有没有办法获取方法对象而不必使用方法的名称来获取它? 例如,我有班级: class Car { public String drive(); public String giveUp(); publi ...

  7. java 静态方法覆盖_Java中方法的覆盖和静态方法的隐藏

    下面的程序对巴辛吉小鬣狗和其它狗之间的行为差异进行了建模.如果你不知道 什么是巴辛吉小鬣狗,那么我告诉你,这是一种产自非洲的小型卷尾狗,它们从 来都不叫唤.那么,这个程序将打印出什么呢? class ...

  8. java如何抛出异常_java中 方法中抛出异常处理方法

    展开全部 Java语言提供e69da5e887aa62616964757a686964616f31333366306461两种异常处理机制:捕获异常和声明抛弃异常. 1.捕获异常: (1)在Java程 ...

  9. java 静态类实例_Java中多个类的静态实例?

    我是新的请不要介意,如果你发现问题愚蠢.我正在搞乱单身代码.我改变了一点(我的问题与单身无关,是的我已经删除了单实例检查).我的问题是虽然java中的类实例只能是一个为什么输出中有两个静态类" ...

最新文章

  1. matlab内存管理(二)
  2. 京沪深月薪均超2万元,清华近三成毕业生年入50万+ | 2019上半年中高端人才就业现状报告...
  3. 容器云之K8s自动化安装方式的选择
  4. Ext RAD开发工具预览
  5. python金融工程的工具包_金融工程及其Python应用
  6. The ultimate end-to-end tutorial to create and deploy a fully decentralized Dapp in ethereum
  7. 在目标检测被“遗忘”领域进行探索后,百度开源最新力作UMOP:即插即用、无痛涨点
  8. java总结:double取两位小数的多种方法
  9. jdk w7环境变量配置
  10. pythonrandom rand_Python np.random.rand()和np.random.randn()
  11. ArrayList的add方法值被覆盖(android项目)
  12. 手把手教你运用深度学习构建视频人脸识别模型(Python实现)
  13. 鹰眼系统原理_飞思卡尔智能车一:山外鹰眼摄像头使用原理
  14. 云计算、大数据和人工智能之间的关系
  15. 【学透二叉树-二叉搜索树(二叉树)的最近公共祖先】
  16. 2021年全球AFM探针收入大约230.8百万美元,预计2028年达到374.9百万美元
  17. macOS 内核之 OS X 系统的起源
  18. 嗨购,共享购商业模式,让你的店铺盈利更轻松
  19. c++ 中的 LPCTSTR类型
  20. layui信息加载流的方式加载数据

热门文章

  1. 弹性和瞬态故障处理库Polly介绍
  2. ASP.NET Core 运行原理解剖[2]:Hosting补充之配置介绍
  3. .NET Core引入性能分析引导优化
  4. ZKEACMS for .Net Core 深度解析
  5. 如何在Jupyter Notebook中使用在anaconda中创建的虚拟环境
  6. TextView的部分点击事件和点击事件
  7. C语言试题六十五之请编写函数实现猴子吃桃问题
  8. Android之如何使用快速联系徽章
  9. java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum
  10. abb机器人指令手册_第1519课 ABB机器人初级教程