反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题。在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了。获取类对象Class.forName(String clazzName)静态方法调用类的class属性,Person.class返回的就是Person的class对象(推荐使用)调用某个对象的getClass()方法具体使用还是要
前言多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和资源消耗都是很高的。线程池应运而生,成为我们管理线程的利器。Java 通过Executor接口,提供了一种标准的方法将任务的提交过程和执行过程解耦开来,并用Runnable表示任务。下面,我们来分析一下 Java 线程池框架的实现ThreadPoolExecutor。下面的分析基于JDK1.7生命周期ThreadPoolExecu
Java 同步块(synchronized block)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容:Java同步关键字(synchronzied)实例方法同步静态方法同步实例方法中同步块静态方法中同步块Java同步示例Java 同步关键字(synchronized)Java中的同步块用synchronized标记。同步块在Java中是同步在某个对象上。所
这篇文章里我们主要讨论下如何在Java里实现一个对象池。最近几年,Java虚拟机的性能在各方面都得到了极大的提升,因此对大多数对象而言,已经没有必要通过对象池来提高性能了。根本的原因是,创建一个新的对象的开销已经不像过去那样昂贵了。然而,还是有些对象,它们的创建开销是非常大的,比如线程,数据库连接等这些非轻量级的对象。在任何一个应用程序里面,我们肯定会用到不止一个这样的对象。如果有一种很方便的创建
二叉查找树可以递归地定义如下,二叉查找树或者是空二叉树,或者是满足下列性质的二叉树:(1)若它的左子树不为空,则其左子树上任意结点的关键字的值都小于根结点关键字的值。(2)若它的右子树不为空,则其右子树上任意结点的关键字的值都大于根节点关键字的值。(3)它的左、右子树本身又是一个二叉查找树。从性能上来说如果二叉查找树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么二叉查找树的搜索性能
1. 什么是Java反射,有什么用?反射使程序代码能够接入装载到JVM中的类的内部信息,允许在编写与执行时,而不是源代码中选定的类协作的代码,是以开发效率换运行效率的一种手段。这使反射成为构建灵活应用的主要工具。反射可以:调用一些私有方法,实现黑科技。比如双卡短信发送、设置状态栏颜色、自动挂电话等。实现序列化与反序列化,比如PO的ORM,Json解析等。实现跨平台兼容,比如JDK中的SocketI
在一般性开发中,笔者经常看到很多同学在对待java并发开发模型中只会使用一些基础的方法。比如Volatile,synchronized。像Lock和atomic这类高级并发包很多人并不经常使用。我想大部分原因都是来之于对原理的不属性导致的。在繁忙的开发工作中,又有谁会很准确的把握和使用正确的并发模型呢?所以最近基于这个思想,本人打算把并发控制机制这部分整理成一篇文章。既是对自己掌握知识的一个回忆,
线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些”池化资源”技术产生的原因。例如Andr
Java实用类库提供了一套相当完整的容器来帮助我们解决很多具体问题。因为我本身是一名Android开发者,包括我在内很多安卓开发,最拿手的就是ListView(RecycleView)+BaseAdapter+ArrayList三剑客, 平时接触使用的容器也只有ArrayList和HashMap。导致对于整个Java容器体系的掌握和使用还停留在很浅的层面。省不足而思改进,那么跟着我来总结一下Jav
一个简单的单例示例单例模式可能是大家经常接触和使用的一个设计模式,你可能会这么写public class UnsafeLazyInitiallization { private static UnsafeLazyInitiallization instance; &nbs
Java 堆 OutOfMemoryErrorJava 堆是用来存储对象实例的, 因此如果我们不断地创建对象, 并且保证 GC Root 和创建的对象之间有可达路径以免对象被垃圾回收, 那么当创建的对象过多时, 会导致 heap 内存不足, 进而引发 OutOfMemoryError 异常./** * @author xiongyongshun *&nb
两个线程一个生产者个一个消费者需求情景两个线程,一个负责生产,一个负责消费,生产者生产一个,消费者消费一个涉及问题同步问题:如何保证同一资源被多个线程并发访问时的完整性。常用的同步方法是采用标记或加锁机制wait() / nofity() 方法是基类Object的两个方法,也就意味着所有Java类都会拥有这两个方法,这样,我们就可以为任何对象实现同步机制。wait()方法:当缓冲区已满/空时,生产
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号