Java
Java学习笔记
H.ZWei
这个作者很懒,什么都没留下…
展开
-
Java多线程 - 线程创建和启动
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。线程的创建一般有以下三种:一、继承Thread类创建线程类定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此经常把run()方法称为线程执行体。创建Thread子类的实例,即创建了线程对象调用线程对象的start()方法就可以启动该线程 private...原创 2018-06-06 23:26:27 · 1303 阅读 · 0 评论 -
Java多线程 - 线程生命周期
当线程被创建并启动后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经历新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其在线程启动后,它不可能一直“霸占”着CPU独自运行,所以CPU工作需要多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。一、新建和就绪状态新建状态:当程序使用new...原创 2018-06-07 23:38:31 · 181 阅读 · 0 评论 -
Java多线程 - 同步synchronized与ReentrantLock(一)
在多线程的应用中,两个或者两个以上的线程需要共享同一个资源。如果多个线程同时在访问同一资源时,都做出了相应的操作来获取自己想要的资源,在这种情况下很难保证获取资源的准确性和唯一性,相互之间产生冲突,通常称之为竞争条件。关于竞争条件的理解:比如火车买票,火车票(数量、座位号等等)是一定的,但卖火车票的窗口是不确定的到处都有,每个窗口就相当于一个线程,这么多的线程共用所有的火车票这个资源;如果在某一个...原创 2018-06-09 14:14:04 · 1234 阅读 · 0 评论 -
Java多线程 - 线程池
在我们开发中经常会使用到多线程,比如在Android中,网络请求或一些耗时操作必须放在子线程中运行,往往会通过Thread开启一个子线程去执行耗时操作,待子线程执行完毕后再通过Handler切换到主线程中运行;如果N多次创建子线程,就无法管理所创建的子线程,它们相互之间竞争,很有可能由于占用过多资源而导致死机或者OOM。所以java提供了线程池来管理我们创建的线程。线程池的优势:1. 降低...原创 2018-06-17 00:04:27 · 3198 阅读 · 1 评论 -
Java多线程 - 生产者消费者模型
什么是生成消费者模式生成者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而是通过阻塞队列来进行通讯,所以生成者生产数据之后不用等待消费者来处理,直接添加到阻塞队列中,消费者也不找生成者要数据,而是直接从阻塞队列里取出,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。使用生产者和消费者模式的优势在线...原创 2018-06-17 23:16:20 · 298 阅读 · 0 评论 -
Java多线程 - 同步synchronized与ReentrantLock(二)
如果使用同步方法实现需求,尽量使用同步方法,这样可以减少代码量,减少出错的概率。如果需要特别的需求,比如要中断锁、判断是否获取锁成功等等,可以使用Lock/Condition条件对象提供的独有的特性,这时可以选择使用Lock/Condition。原创 2018-06-10 19:15:21 · 321 阅读 · 0 评论 -
Java学习之注解
注解简单点就可以理解为是一种标签,标识某物是什么,用途场景又是什么……我们可以联想下工厂里的物料仓库,为了区分各种各样的物料,往往会对物料进行不同的分类,标识物料名称、类型、用途、数量等等。其实Java中的注解也是类似的,在代码中是一种特殊标记,这种标记是在编译时、运行时、还是类加载时被读取,并执行相应的处理。原创 2018-05-31 00:00:23 · 1340 阅读 · 0 评论 -
Java抽象类与接口的区别
接口类似于整个系统的总纲设计,它制定了系统各个模块应该遵守的标准,因此一个系统内中接口不应该经常改变。一旦接口被改变了,对整个系统都会带来辐射式的影响,最后导致大部分类都需要改。抽象类相当于一个系统中标准模块,其他模块都基于此实现的,也就是说多个子类的共同父类,体现的是一种模版式设计。抽象类作为多个子类的抽象父类,相当于标准产品,这个标准产品实现系统中部分功能,但还不能上线使用,必须进一步改进才可以最终成为一个成品。原创 2018-06-04 23:11:05 · 143 阅读 · 0 评论 -
Java学习之泛型及应用场景
一、概括泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数的方式传递,类似于方法中的变量参数。可以用在类、接口、方法的创建中,分别简称为泛型类、泛型接口、泛型方法。在没有使用泛型的情况下,...原创 2018-05-23 22:49:31 · 7077 阅读 · 0 评论 -
使double保留两位小数的多方法 java保留两位小数
[java] view plain copy print?import java.text.DecimalFormat;    DecimalFormat  &a原创 2018-05-10 23:15:58 · 417 阅读 · 1 评论 -
Java学习之反射机制
什么是反射Java反射是在程序运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;并可以得到类的实例对象,对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的过程称之为Java的反射机制。反射的核心就是在JVM虚拟机运行中动态加载类或调用方法以及访问属性,它不需要事先(写代码期间或者编译时)知道是运行对象是哪个。反射机制提供了哪些功能?在运行时判断任意一个对象所...原创 2018-05-26 15:08:06 · 233 阅读 · 0 评论 -
Java之异常处理
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。原创 2018-06-03 01:38:14 · 251 阅读 · 0 评论 -
Java学习之反射与泛型
一、泛型和Class类自java引入了泛型机制,Class类也增加了泛型功能,从而允许使用泛型来限制Class类,例如String.class的类型实际上是Class<String> 。如果Class对应的类型是未知的,则可以使用Class<?>,以通配符的方式来表示,通过反射中使用泛型,可以避免使用反射生成的对象再次需要强制类型转换。泛型的优点有很多,但最最重要的一点就是...原创 2018-05-27 15:10:17 · 403 阅读 · 0 评论