返回顶部
首页 > 资讯 > 精选 >Java 中怎么利用SynDemo对象解决继承问题
  • 629
分享到

Java 中怎么利用SynDemo对象解决继承问题

2023-06-17 15:06:06 629人浏览 安东尼
摘要

Java 中怎么利用SynDemo对象解决继承问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java SynDemo对象刚一出现的时候有很多程序员都很头痛,

Java 中怎么利用SynDemo对象解决继承问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Java SynDemo对象刚一出现的时候有很多程序员都很头痛,其实这是完全没有必要的,下面我们就来详细的学习下有关的相关问题。我们发现,对于Java SynDemo对象,只有synMethord1运行了,而synMethord2却没有运行。

这是应为在方法级别的synchronized声明将lock这个类对象的当前实例。所以在synMethord1运行结束unlock之前,当前Java SynDemo对象实例是无法运行synMethord2的。这种方法级别的synchronized声明和以下的做法是等同的:

  1. package com.cnblogs.gpcuster;  

  2. public class SynDemo { public void synMethord1() { 
    synchronized (this) { while (true) { try { Thread.sleep(1000); 
    System.out.println("synMethord1"); } catch (InterruptedExceptio
    e) { // TODO Auto-generated catch block  

  3. e.printStackTrace();  

  4. }  

  5. }  

  6. }  

  7. }  

  8. public void synMethord2() { synchronized (this) { while (true) 
    { try { Thread.sleep(1000); System.out.println("synMethord2"); } 
    catch (InterruptedException e) { // TODO Auto-generated catch block  

  9. e.printStackTrace();  

  10. }  

  11. }  

  12. }  

  13. }  

运行程序,结果与上次相同。

如果我们希望分别同步2个方法该如何处理?可以参考这个实现:

  1. package com.cnblogs.gpcuster;  

  2. public class SynDemo { private Object flag1 = new Object();
     private Object flag2 = new Object(); public void synMethord1() 
    { synchronized (flag1) { while (true) { try { Thread.sleep(1000); 
    System.out.println("synMethord1"); } catch (Interrupted
    Exception e) { // TODO Auto-generated catch block  

  3. e.printStackTrace();  

  4. }  

  5. }  

  6. }  

  7. }  

  8. public void synMethord2() { synchronized (flag2) { while (true) 
    { try { Thread.sleep(1000); System.out.println("synMethord2"); } 
    catch (InterruptedException e) { // TODO Auto-generated catch block  

  9. e.printStackTrace();  

  10. }  

  11. }  

  12. }  

  13. }  

运行程序,结果如我们预期:

main   synMethord2   synMethord2   main   synMethord1   main   synMethord1   synMethord2

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: Java 中怎么利用SynDemo对象解决继承问题

本文链接: https://lsjlt.com/news/290355.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java 中怎么利用SynDemo对象解决继承问题
    Java 中怎么利用SynDemo对象解决继承问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java SynDemo对象刚一出现的时候有很多程序员都很头痛,...
    99+
    2023-06-17
  • 怎么解决PHP单继承问题
    这篇文章给大家分享的是有关怎么解决PHP单继承问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Trait简介Trait是PHP 5.4引入的新概念,看上去既像类又像接口。其实都不是,Trait可以看做类的部分实...
    99+
    2023-06-29
  • 详解Java面向对象中的继承
    继承的概念 继承是面向对象编程中的一个概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。子类在继承父类的同时也可以添加自己的属性和方法,从而实现代码的...
    99+
    2023-05-19
    Java 面向对象 Java 继承
  • 怎么在java中利用继承访问变量
    今天就跟大家聊聊有关怎么在java中利用继承访问变量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、...
    99+
    2023-06-14
  • C++中的继承问题(继承基本概念、菱形虚拟继承的对象模型)
    目录一、继承的概念与定义格式概念及定义格式二、赋值兼容规则三、继承中的作用域四、子类的默认成员函数构造函数拷贝构造函数赋值运算符重载析构函数构造和析构函数调用顺序五、继承与友元、静态...
    99+
    2023-02-05
    C++的继承 继承基本概念 菱形虚拟继承
  • C++对象与继承使用中一些问题介绍
    目录定义抽象类类的继承使用new关键字实例化对象,只能用指针变量来接收使用普通的对象属性及方法时使用.来引用,但是用指针表示的对象则使用->定义类的时候,属性需要赋初始值的请况...
    99+
    2024-04-02
  • C++对象与继承使用的问题有哪些
    本篇内容主要讲解“C++对象与继承使用的问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++对象与继承使用的问题有哪些”吧!定义抽象类class Person {p...
    99+
    2023-06-22
  • PHP中如何用Trait解决单继承问题
    这篇文章主要讲解了“PHP中如何用Trait解决单继承问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中如何用Trait解决单继承问题”吧!我们都知道PHP是单继承语言,但是有些时候...
    99+
    2023-06-29
  • JavaScript 继承的谜团:解决继承中令人困惑的问题
    ...
    99+
    2024-04-02
  • 详解Java面向对象中的继承与多态
    详解Java面向对象中的继承与多态?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java 继承与多态的深入理解1、  什么是继承,继承的特点?子类继承父类的特征和...
    99+
    2023-05-31
    java 面向对象 ava
  • C++中多重继承问题及解决方法概述
    C++中多重继承问题及解决方法概述引言:在面向对象编程中,继承是一种重要的代码复用机制。C++支持多重继承,即一个子类可以同时从多个父类继承属性和方法。然而,多重继承也带来了一些问题,如命名冲突和二义性。本文将讨论多重继承问题,并介绍解决方...
    99+
    2023-10-22
    解决方法 (Solutions) 多重继承 (Multiple Inheritance) 问题 (Issues)
  • C++ 成员函数详解:对象方法的虚继承与钻石问题
    虚继承解决了多重继承中的“钻石问题”,其中一个类从两个或多个具有相同基类的子类继承时。通过在派生类的继承规范中使用 virtual 关键字,派生类不会获得基类的副本,而是通过指针间接访问...
    99+
    2024-04-29
    c++ 虚继承
  • java中怎么利用lambda解决foreach循环问题
    本篇文章给大家分享的是有关java中怎么利用lambda解决foreach循环问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、以前我们使用的for循环 &nbs...
    99+
    2023-06-20
  • 利用 Java 封装和继承实现代码解耦:面向对象编程的真谛
    ...
    99+
    2024-04-02
  • C#未将对象引用设置到对象问题怎么解决
    在C#中,当你使用一个尚未被实例化的对象时,就会出现"未将对象引用设置到对象的实例"错误。要解决这个问题,你需要确保在使用对象之前对...
    99+
    2023-08-09
    C#
  • C++中多重继承问题及解决方法的介绍
    C++中多重继承问题及解决方法的介绍在C++中,多重继承是一种强大的特性,允许一个类从多个父类派生而来。然而,多重继承也带来了一些问题和挑战,其中最常见的问题是菱形继承问题(Diamond Inheritance Problem)。菱形继承...
    99+
    2023-10-22
    解决方法 (Solutions) 多重继承 (Multiple Inheritance) 问题 (Issues)
  • 利用Apache Common将java对象池化的问题
    什么是对象池化? 对象被创建后,使用完毕不是立即销毁回收对象,而是将对象放到一个容器保存起来,下次使用的时候不用创建对象,而是从容器中直接获取。 什么样的对象需要池化 一般需要池化的...
    99+
    2024-04-02
  • C#对象浏览器问题怎么解决
    这篇文章主要介绍“C#对象浏览器问题怎么解决”,在日常操作中,相信很多人在C#对象浏览器问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#对象浏览器问题怎么解决”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • JavaScript面向对象中的封装和继承怎么实现
    这篇“JavaScript面向对象中的封装和继承怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript面...
    99+
    2023-06-29
  • Java 对象导向编程中的封装与继承:理解基本原则
    封装是指将数据和方法作为一个整体进行封装,以便对数据进行保护和隐藏。通过封装,我们可以控制对数据的访问,从而提高程序的安全性、可维护性和可重用性。在 Java 中,封装可以通过访问修饰符(如 private、public)来实现。 继承 ...
    99+
    2024-03-12
    封装
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作