![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
effective java
侪某某
这个作者很懒,什么都没留下…
展开
-
effective java executor和task优先于线程
如果编写的是小程序,或者轻载的服务器,使用Executor.newCachedThreadPool通常是个不错的选择。 在大负载的服务器中,最好使用Executor.newFixedThreadPool,他为你提供了一个包含固定线程数目的线程池,活着为了最大限度的控制他,就直接使用ThreadPoolExecutor类你不仅应该尽量不要编写自己的工作队列,而且还应该尽量不直接使用线程。现在关键抽象转载 2017-08-20 17:49:39 · 414 阅读 · 0 评论 -
effective java避免过度同步
过度同步可能会导致性能降低,死锁,甚至不确定的行为。为了避免火星失败和安全性失败,在一个被同步的方法或者代码快中,永远不要放弃对客户端的控制。将外来方法调用一处同步的代码块 建立快照 使用并发集合,CopyOnWriteArrayList,属于ArrayList的辩题,通过拷贝整个底层数组,在这里实现所有的写作,由于内部数据用于不改动,因此迭代不需要锁定,速度也非常快。在同步区域之外被调用的外来转载 2017-08-20 16:54:54 · 388 阅读 · 0 评论 -
effective java同步访问共享的可变数据
关键字synchronized可以保证同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块。 同步的意思: 1、当一个对象被一个线程修改的时候,可以阻止另一个线程观察到对象内部不一致的状态; 2、同步不仅可以组织一个线程看到对象处于不一致的状态,还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。 考虑下面这个阻止一个线程妨碍另一个线程的任务。ja转载 2017-08-20 16:21:39 · 337 阅读 · 0 评论 -
Effective Java慎用可变参数
从java1.5后增加了可变参数的方法,可变参数可以接受0个或者多个指定类型的参数,可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法。举个可变参数的例子 4.png (19.4 KB, 下载次数: 0)下载附件 保存到相册13 分钟前 上传计算Int类型参数原创 2017-08-16 21:07:53 · 381 阅读 · 0 评论 -
Effective Java慎用重载
先看一下下面的这个重载方法 你所期望到的应该是输出Set ,List,Unknown Collection但是结果却是输出了三遍UnknownCollection,主要原因是,classify这个方法被重载了,调用重载方法是在编译时就做出决定的,对于for循环的这三次他的类型是Collection,每次迭代的类型都是不同的,但是这并不影响对重载方法的选择,三次编译的类型都是Coll转载 2017-08-16 21:05:54 · 276 阅读 · 0 评论 -
接口优于抽象类
effetive java提出了三个使用接口的原因: 1、现有的类可以很容易被更新,以实现新的接口。 2、接口是定义mixin(混合类型)的理想选择。 3、接口允许我们构造非层次结构的类型框架。转载 2017-08-11 08:13:41 · 312 阅读 · 0 评论 -
For-each循环优于for循环感悟
For-each是java1.5之后才推行的版本,它的优势在于可以完全隐藏迭代器或者是索引变量,避免了混乱和出错的可能,不会有性能的损失。for(Element e : elements){ doSomething(e);}元素代表的意思: 当见到冒号的时候,可以把他读作在什么里面。因此上面的循环可以读作“对于元素中的每个元素e”。举个摇筛子的例子代码如下:enum Face{原创 2017-08-10 22:38:35 · 1363 阅读 · 0 评论