Hierarchy For Package javax.management

java.lang.Object
getClass    public final Class<?> getClass()
Java的每个类都带有一个运行时类对象,该Class对象中保存了创建对象所需的所有信息。可以用.class返回此 Object 的运行时类Class对象,也可以用getClass()获得。可以利用此Class对象进行一些反射特性的操作。
hashCode public int hashCode() 
hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值,支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行hashcode比较时所用的信息没有被修改。
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果,注:这里说的equals(Object) 方法是指Object类中未被子类重写过的equals方法。
如果两个hashCode()返回的结果相等,则两个对象的equals方法不一定相等。
如果根据equals(java.lang.Object)方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
equals  public boolean equals(Object obj)
和null的比较应该返回false, null没有equals方法
clone protected Object clone() throws CloneNotSupportedException
x.clone() != x 为true, x.clone().getClass() == x.getClass() 为true  x.clone().equals(x) 为true
这不是硬性要求
Object本身隐藏提供clone方法,我们需要在自己的类中进行实现,并调用super.clone()。
所有的数组已经实现了Cloneable接口。
The class Object does not itself implement the interface Cloneable, so calling the clone method on an object whose class is Object will result in throwing an exception at run time.
Note that all arrays are considered to implement the interface Cloneable and that the return type of the clone method of an array type T[] is T[] where T is any reference or primitive type. Otherwise, this method creates a new instance of the class of this object and initializes all its fields with exactly the contents of the corresponding fields of this object, as if by assignment; the contents of the fields are not themselves cloned. Thus, this method performs a "shallow copy" of this object, not a "deep copy" operation.
对于primitive type来说,这种复制是可行的,对于非primitive type来说,这种复制不可行。

 1 class A {
 2     public A (int a) {
 3         this.a = a;
 4     }
 5     public int a;
 6     public void add() {
 7         a += 5;
 8     }
 9 }
10 class B implements Cloneable {
11     public int b;
12     public A ba = new A (5);
13     public Object clone() {
14         B newB = null;
15         try {
16             newB = (B)super.clone();
17         } catch (CloneNotSupportedException e) {
18             e.printStackTrace();
19         }
20         return newB;
21     }
22 }
23 class C {
24     public static void main(String[] args) {
25         B firB = new B();
26         firB.b = 5;
27
28         System.out.println("before Clone" + firB.b);
29         System.out.println("before Clone" + firB.ba.a);
30
31         B secB = (B)firB.clone();
32         secB.b = 7;
33         secB.ba.add();
34         System.out.println("After Clone firB" + firB.b);
35         System.out.println("After Clone firB" + firB.ba.a);
36         System.out.println("After Clone secB" + secB.b);
37         System.out.println("After Clone secB" + secB.ba.a);
38     }
39 }

结果如下:

可以修改上面的方法

class A implements Cloneable{
    public A (int a) {
        this.a = a;
    }
    public int a;
    public void add() {
        a += 5;
    }
    public Object clone() {
        A newA = null;
        try {
            newA = (A)super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return newA;
    }
}
class B implements Cloneable {
    public int b;
    public A ba = new A (5);
    public Object clone() {
        B newB = null;
        try {
            newB = (B)super.clone();
            newB.ba = (A)ba.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return newB;
    }
}
class C {
    public static void main(String[] args) {
        B firB = new B();
        firB.b = 5;

        System.out.println("before Clone" + firB.b);
        System.out.println("before Clone" + firB.ba.a);

        B secB = (B)firB.clone();
        secB.b = 7;
        secB.ba.add();
        System.out.println("After Clone firB" + firB.b);
        System.out.println("After Clone firB" + firB.ba.a);
        System.out.println("After Clone secB" + secB.b);
        System.out.println("After Clone secB" + secB.ba.a);
    }
}

reference :  https://blog.csdn.net/baobeisimple/article/details/1727125#_Toc174096679toString publicString toString()
return getClass().getName() + ‘@‘ + Integer.toHexString(hashCode())

首先我们需要再复习一下java的synchronized机制,每一个对象都有一个监听器(monitor),每一个synchronizad()代码块的括号里面的都是一个对象, 当一个线程试图进入synchronizad的代码块的时候,会试图得到这个对象的monitor,其他处于同一 monitor下面的线程想要进入synchronizad代码块的时候就必须等待这个线程释放monitor,当然,一个线程执行完synchronizad代码块后会自动释放monitor。

reference :http://blog.51cto.com/2925665/1324501

1. 你可以使用wait和notify函数来实现线程间通信。你可以用它们来实现多线程(>3)之间的通信。

2. 永远在synchronized的函数或对象里使用wait、notify和notifyAll,不然Java虚拟机会生成 IllegalMonitorStateException。

3. 永远在while循环里而不是if语句下使用wait。这样,循环会在线程睡眠前后都检查wait的条件,并在条件实际上并未改变的情况下处理唤醒通知。

4. 永远在多线程间共享的对象(在生产者消费者模型里即缓冲区队列)上使用wait。

reference : http://www.importnew.com/16453.htmlnotify()

Throws:IllegalMonitorStateException - if the current thread is not the owner of this object‘s monitor.

notifyAll()
Throws:IllegalMonitorStateException - if the current thread is not the owner of this object‘s monitor.
wait()

public final void wait(long timeout) throws InterruptedException

原文地址:https://www.cnblogs.com/lzz-cabbage/p/8884374.html

时间: 2024-11-05 16:28:52

Hierarchy For Package javax.management的相关文章

druid抛出的异常------javax.management.InstanceAlreadyExistsException引发的一系列探索

最近项目中有个定时任务的需求,定时检查mysql数据与etcd数据的一致性,具体实现细节就不说了,今天要说的就是实现过程中遇到了druid抛出的异常,以及解决的过程 异常 异常详细信息 五月 05, 2017 4:16:00 下午 com.alibaba.druid.proxy.DruidDriver warn 警告: register druid-driver mbean error javax.management.InstanceAlreadyExistsException: com.al

Liberty Profile Jython automation – TypeError – javax.management.remote.JMXServiceURL() – 3rd arg can’t be coerced to int

转载自: http://www.themiddlewareshop.com/2016/03/24/liberty-profile-jython-automation-typeerror-javax-management-remote-jmxserviceurl-3rd-arg-cant-be-coerced-to-int/ When running a Jython script to control the state of an Application Deployed to a Stand

jedis报LinkageError错误:javax/management/MBeanServer

使用jedis客户端时,遇到下面异常信息: Horrible Exception: java.lang.LinkageError: loading constraint violation: loader "com/ibm/ws/classloader/[email protected]" previously initiated loading for a different type with name "javax/management/MBeanServer"

javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat解决方案

ERROR [com.alibaba.druid.stat.DruidDataSourceStatManager] – unregister mbean errorjavax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStatat com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean--- 原因:在一台服务器上启动了

Tomcat:javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat异常

问题: 在关闭tomcat时: Tomat报出一下异常:ERROR [com.alibaba.druid.stat.DruidDataSourceStatManager] – unregister mbean errorjavax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStatat com.sun.jmx.interceptor.DefaultMBeanServerIntercept

kafka javax.management.InstanceAlreadyExistsException: kafka.consumer:type=app-info,id=consumer-1

错误日志: 2019-10-11 17:50:48.744 WARN []-[o.a.k.clients.consumer.ConsumerConfig :173] The configuration num.replica.fetchers = 1 was supplied but isn't a known config.2019-10-11 17:50:48.747 INFO []-[o.a.kafka.common.utils.AppInfoParser :82] Kafka versi

javax.management.NotCompliantMBeanException

public interface QueueMBean { } 假如接口名叫 XMBean ,那么实现名就必须一定是X,而且是大小写敏感的. public class Queue implements QueueMBean { }

[转]提示错误 package javax.servlet.jsp does not exist package javax.servletr.jsp.tagext does not exist

你在JAVA servlet容器运行的时候没配置servlet-api.jar,tools.jar,rt.jar,jsp-api.jar的classpath 我的classpath= .;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\common\lib\serlvet-api.jar;%JAVA_HOME%\jre\lib\jsp-api.jar;%JAVA_HOM

druid抛出异常:javax.management.InstanceAlreadyExistsException: com.alibaba.druid:type=DruidDataSource,id=xxx

参考: https://www.cnblogs.com/youzhibing/p/6826767.html 结论: 问题产生的根本原因还真是:同一实例被启动了两遍,Path为/SLBAdmin启动一次,Path为/wgp-Web启动一次, 开发过程中最好保证工程名与发布路径保证一直,避免不必要的麻烦 原文地址:https://www.cnblogs.com/moly/p/8308871.html