返回顶部
首页 > 资讯 > 精选 >Object中的公共方法及作用有哪些
  • 831
分享到

Object中的公共方法及作用有哪些

2023-06-02 12:06:10 831人浏览 安东尼
摘要

本篇内容主要讲解“Object中的公共方法及作用有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Object中的公共方法及作用有哪些”吧!直接看一下,Object类的源码:package j

本篇内容主要讲解“Object中的公共方法及作用有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Object中的公共方法及作用有哪些”吧!

直接看一下,Object类的源码

package java.lang;

public class Object {

private static native void reGISterNatives();

static {

registerNatives();

}

public final native Class<?> getClass();

public native int hashCode();

public boolean equals(Object obj) {

return (this == obj);

}

protected native Object clone() throws CloneNotSupportedException;

public String toString() {

return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

public final native void notify();

public final native void notifyAll();

public final native void wait(long timeout) throws InterruptedException;

public final void wait(long timeout, int nanos) throws InterruptedException {

if (timeout < 0) {

throw new IllegalArgumentException("timeout value is negative");

}

if (nanos < 0 || nanos > 999999) {

throw new IllegalArgumentException(

"nanosecond timeout value out of range");

}

if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {

timeout++;

}

wait(timeout);

}

public final void wait() throws InterruptedException {

wait(0);

}

protected void finalize() throws Throwable { }

}

其实看jdk文档大家都能知道这些方法的含义,不过我把自己对它们的理解介绍一下,这里面public的方法,重点我会详细介绍较难掌握的wait和notify方法。

具体方法的说明如下:

public String toString()

这个默认是打印对象的getClass().getName() + '@' + Integer.toHexString(hashCode())

类名@哈希码,可子类可重写该方法定义自己的对象字符串,最常用。

public final native Class<?> getClass();

获取对象的类名,在反射中可以用到。

public int hashCode();

public boolean equals(Object obj)

这两个方法在集合框架的Set集合类中用途非常重要,因为Set集合中的元素不允许重复,各种自定义对象如何判断是否重复,就是通过重写这两个方法来完成的。

public final native void notify();

public final native void notifyAll();

public final void wait()

public final native void wait(long timeout)

public final void wait(long timeout, int nanos)

这里几组方法有多个重载方法,不过核心的方法就是wait方法和notify方法,这两个方法,如果没有学习过java多线程编程估计不会接触到,这涉及到线程的同步以及在同步条件下线程通信的问题。

java 线程同步机制就是保证多个线程访问同一个共享对象时不发生冲突的步骤是上、操作、释放锁。而这个锁是在java对象中隐含的锁,锁也叫"同步监视器" ,它是所有对象都拥有的,你不用可视而不见,

其实就定义在Object类中,不过我们不用了解它的存在,为了防止同一个共享对象不发生冲突,java用 synchronized 来保护共享对象不处于竞争状态.,可采用同步方法或同步块来完成,但是当同步环境下两个线程需要通信怎么办?如果没有通信机制,两个线程只能针对锁的获取发出轮询效率很低,这里Object类的wait和notify两个方法就可以解决这个问题。

采用 wait()/notify() 实现同步条件下线程间通信的原理如下:

使用前提:必须是同步条件,否则调用会异常.

调用wait()

调用线程会放弃CPU

调用线程释放锁

调用线程进入锁的等待集合(池),等待CPU重新调度。

调用notify()

某个线程从锁的等待集合中离开进入准备运行状态

被通知的线程必须重新请求锁才能执行.

notify()不能精确指定被通知的线程.

notifyAll() 通知所有在等待集合的线程离开进入准备运行状态

下面以经典的生产者和消费者问题来了解生产者线程Producer和消费者线程Consumer,同步一个同享对象Shop,利用wait和notify方法来通信的代码:

Puducer.java 生产者线程定义

public class Producer implements Runnable{

Shop shop;

public Producer(Shop shop) {

// TODO Auto-generated constructor stub

this.shop=shop;

new Thread(this,"生产者线程").start();

}

@Override

public void run() {

// TODO Auto-generated method stub

int i=0;

while(true){

shop.put(i++);

}

}

}

Consumer.java 消费者线程定义

public class Consumer implements Runnable{

Shop shop;

public Consumer(Shop shop) {

// TODO Auto-generated constructor stub

this.shop=shop;

new Thread(this,"消费者线程").start();

}

@Override

public void run() {

// TODO Auto-generated method stub

while(true){

shop.get();

}

}

}

共享对象Shop.java定义

public class Shop {

int no;

boolean hasData=false; //false表示无数据 true有数据

synchronized int get(){ //消费产品

if(hasData==false){

try {

wait();//消费者线程暂停

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("消费:"+no);

hasData=false;//消费完了.通知生产

notify();

return no;

}

synchronized void put(int no){ //放产品

if(hasData==true){

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("生产:"+no);

hasData=true;

this.no=no;

notify();

}

}

测试类PC.java

public class PC {

public static void main(String[] args) {

Shop shop=new Shop();

new Producer(shop);

new Consumer(shop);

}

}

到此,相信大家对“Object中的公共方法及作用有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Object中的公共方法及作用有哪些

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

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

猜你喜欢
  • Object中的公共方法及作用有哪些
    本篇内容主要讲解“Object中的公共方法及作用有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Object中的公共方法及作用有哪些”吧!直接看一下,Object类的源码:package j...
    99+
    2023-06-02
  • java中Object有哪些公用方法
    小编给大家分享一下java中Object有哪些公用方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Object有哪些公用方法?clone() 创建斌返回此对象的副本equals() 判断...
    99+
    2024-04-02
  • java中的Object类有哪些方法
    Object是所有类的父类,任何类都默认继承Object。Object类到底实现了哪些方法?1、clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedExcep...
    99+
    2018-10-26
    java入门 java Object类 方法
  • Java中Object类常用的方法有哪些
    本篇内容主要讲解“Java中Object类常用的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中Object类常用的方法有哪些”吧!前言Java 中的 Object 方法在面试...
    99+
    2023-06-22
  • java中object类的常用方法有哪些
    Java中Object类的常用方法有: equals(Object obj):判断两个对象是否相等。 hashCode():返回对...
    99+
    2023-10-25
    java object
  • Java常见知识点汇总(⑥)——Object有哪些公用方法?
    protected Object clone() 创建并返回此对象的一个副本。boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。protected void finalize() 当垃圾回收器确定不...
    99+
    2023-06-05
  • vue中的公共方法调用方式
    目录vue公共方法调用(1)如果是全局(多页面)使用(2)如果是单页面使用vue如何封装和调用公共方法封装公共方法调用公共方法vue公共方法调用 首先,在assets文件夹下,新建j...
    99+
    2024-04-02
  • vue实现自定义公共组件及提取公共的方法
    目录自定义公共组件及提取公共的方法vue自定义公共组件vue 提取公共的方法vue定义公用方法自定义公共组件及提取公共的方法 vue自定义公共组件 我们在编写页面的时候,会存在公共的...
    99+
    2024-04-02
  • JavaScript中Object基础内部方法有哪些
    这篇文章主要为大家展示了“JavaScript中Object基础内部方法有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中Object基...
    99+
    2024-04-02
  • java中printStackTrace()方法的作用有哪些
    Java中的printStackTrace()方法用于打印异常的堆栈跟踪信息。其作用包括:1. 打印异常的堆栈跟踪信息:printS...
    99+
    2023-09-11
    java
  • c#中PrepareCommand()方法的作用有哪些
    在C#中,PrepareCommand()方法的作用主要有以下几个: 为数据库连接创建一个新的Command对象。 预编译SQL语...
    99+
    2023-10-27
    c#
  • Xamarin.Forms XAML控件的公共属性有哪些
    这篇文章主要为大家展示了“Xamarin.Forms XAML控件的公共属性有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Xamarin.Forms XAML控件的公共属性有哪些”这篇文章...
    99+
    2023-06-04
  • JavaScript中实现跨域共享的方法有哪些
    本篇文章给大家分享的是有关JavaScript中实现跨域共享的方法有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。同源策略在客户端编程语言...
    99+
    2024-04-02
  • JavaScript中的Object介绍及作用
    本篇内容介绍了“JavaScript中的Object介绍及作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • java super()方法的作用有哪些
    super()方法主要有以下几个作用:1. 调用父类的构造方法:在子类的构造方法中使用super()方法可以调用父类的构造方法,用于...
    99+
    2023-08-08
    java super()
  • Swift中数组及常用方法有哪些
    这篇文章主要介绍了Swift中数组及常用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 创建数组// 创建整型数组var array1:&n...
    99+
    2023-06-25
  • 共享虚拟主机的作用有哪些
    共享虚拟主机的作用包括:1. 降低成本:共享虚拟主机可以将服务器资源划分为多个虚拟环境,多个用户共享同一台物理服务器,从而降低了硬件...
    99+
    2023-08-31
    共享虚拟主机 虚拟主机
  • 弹性公网ip有哪些作用
    弹性公网ip的作用:1、可以将此IP绑定到任意云主机上随时进行升级操作;2、可以使用弹性公网ip在云主机上建立公网通信,实现与Internet上的其他计算机随意互相访问。具体分析如下:公网ip:可以用于域名解析ip,服务器远程登录ip,是最...
    99+
    2024-04-02
  • bootstrap中Table的操作方法有哪些
    这篇文章主要介绍bootstrap中Table的操作方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下function HQCreatTable(ob)&...
    99+
    2024-04-02
  • Golang中的位操作方法有哪些
    这篇文章主要讲解了“Golang中的位操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang中的位操作方法有哪些”吧!在计算机内存昂贵,处理能力有限的美好旧时光里,用比较黑...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作