2017年5月26日

写一段代码在遍历 ArrayList 时移除一个元素

摘要: Iterator iterator = list.iterator; while(iterator.hasNaxt()){ String s = iterator.next(); if(s.equals("b")){ iterator .remove(); } } 阅读全文

posted @ 2017-05-26 23:59 辰_雨_ 阅读(256) 评论(0) 推荐(0) 编辑

Hashtable 与 HashMap 有什么不同之处

摘要: Hashtable是同步的比较慢,而HashMap没有同步策略所以速度比较快。 Hashtable不允许有空值,HashMap可以有一个空值。 阅读全文

posted @ 2017-05-26 23:52 辰_雨_ 阅读(76) 评论(0) 推荐(0) 编辑

Java 中的 TreeMap 是采用什么树实现的?

摘要: 红黑树。 阅读全文

posted @ 2017-05-26 23:50 辰_雨_ 阅读(117) 评论(0) 推荐(0) 编辑

ArrayList 与 LinkedList 的不区别?

摘要: 最明显的区别是 ArrrayList 底层的数据结构是数组,支持随机访问, 而 LinkedList 的底层数据结构书链表,不支持随机访问。使用下标 访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。 阅读全文

posted @ 2017-05-26 23:48 辰_雨_ 阅读(70) 评论(0) 推荐(0) 编辑

poll() 方法和 remove() 方法的区别?

摘要: poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败的时候会返回空,但是 remove() 失败的时候会抛出异常。 阅读全文

posted @ 2017-05-26 23:46 辰_雨_ 阅读(240) 评论(0) 推荐(0) 编辑

List、Set、Map 和 Queue 之间的区别

摘要: List是一个有序集合,允许可以元素重复。 Set是无序集合。 Map是独立的合集 它使用键值对的方式来储存数据 键不能有重复的 值可以用 Queue用于模拟"队列"这种数据结构(先进先出 FIFO)。 阅读全文

posted @ 2017-05-26 23:45 辰_雨_ 阅读(202) 评论(0) 推荐(0) 编辑

final、finalize 和 finally 的不同之处?

摘要: final是修饰符,可以用于修饰方法,变量和类等,通过final修饰的变量,就意味该变量值在初始化候就不能在改变。 finalize方法是对象在被回收之前调用的方法,给对象自己一个复活自己的机会。 finally是关键字,他通try,catch一样用于异常处理,finally块一定会被执行的,无论t 阅读全文

posted @ 2017-05-26 23:40 辰_雨_ 阅读(78) 评论(0) 推荐(0) 编辑

3*0.1 == 0.3 将会返回什么?true 还是 false?

摘要: false,因为有些浮点数不能完全精确的表示出来。 阅读全文

posted @ 2017-05-26 23:21 辰_雨_ 阅读(214) 评论(0) 推荐(0) 编辑

我能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量吗?

摘要: 不行,你不能在没有强制类型转换的前提下将一个 double 值赋值给 long 类型的变量,因为 double 类型的范围比 long 类型更广,所以必须要进行强制转换。 阅读全文

posted @ 2017-05-26 23:20 辰_雨_ 阅读(544) 评论(0) 推荐(0) 编辑

Java 中 ++ 操作符是线程安全的吗?

摘要: 不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,这个过程可能会出现多个线程交差 阅读全文

posted @ 2017-05-26 23:18 辰_雨_ 阅读(225) 评论(0) 推荐(0) 编辑

a = a + b 与 a += b 的区别

摘要: += 隐式的将加操作的结果类型强制转换为持有结果的类型。如果两这个整型相加, 如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作。 如果加法操作的结果比 a 的最大值要大,则 a+b 会出现编译错误,但是 a += b 没问题,如下: 阅读全文

posted @ 2017-05-26 23:18 辰_雨_ 阅读(107) 评论(0) 推荐(0) 编辑

Java 中应该使用什么数据类型来代表价格?

摘要: 如果不是特别关心内存和性能的话,使用BigDecimal,否则使用预定义精度的 double 类型。 阅读全文

posted @ 2017-05-26 23:10 辰_雨_ 阅读(153) 评论(0) 推荐(0) 编辑

Java 中 sleep 方法和 wait 方法的区别?

摘要: 虽然两个都是对当前运行的线程进行的暂停,但sleap是对线程的短暂的暂停,他是不释放锁。 而wait是意味着条件等待,所以他需要释放锁,因为这样其他等待的线程才能满足条件是获取 到该锁。 阅读全文

posted @ 2017-05-26 23:08 辰_雨_ 阅读(78) 评论(0) 推荐(0) 编辑

用 Java 写一个线程安全的单例模式(Singleton)?

摘要: public class Singleton{ private static Singleton singleton; private Singleton (){ } public static Singleton getInstance(){ if(singleton ==... 阅读全文

posted @ 2017-05-26 23:04 辰_雨_ 阅读(216) 评论(0) 推荐(0) 编辑

用 wait-notify 写一段代码来解决生产者-消费者问题?

摘要: public class EventStorage { private int maxSize; private List storage; public EventStorage(){ maxSize = 10; storage = new LinkedList(); } public s... 阅读全文

posted @ 2017-05-26 22:52 辰_雨_ 阅读(190) 评论(0) 推荐(0) 编辑

什么是线程局部变量?

摘要: 线程局部变量就是局限于线程的内部变量,属于线程自身所有,不在多个线程间的共享。 Java提供ThreadLocal的类来支持线程局部变量,是一种实现线程安全的方式。但是在 管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心,在这种情况下, 工作线程的生命周期比任何应用变量的生命周期都要 阅读全文

posted @ 2017-05-26 22:23 辰_雨_ 阅读(135) 评论(0) 推荐(0) 编辑

Swing 是线程安全的?

摘要: 不是,Swing 不是线程安全的。 你不能通过任何线程来更新 Swing 组件,如 JTable、JList 或 JPanel,事实上, 它们只能通过 GUI 或 AWT 线程来更新。这就是为什么 Swing 提供 invokeAndWait() 和 invokeLater() 方法来获取其他线程的 阅读全文

posted @ 2017-05-26 22:16 辰_雨_ 阅读(128) 评论(0) 推荐(0) 编辑

Java 中怎么获取一份线程 dump 文件?

摘要: 在Linux下可以运行kill -3 PID来获取java的dump的文件。 在window下,可以按Ctrl + Break来获取。这样JVM就会 将线程的dump文件打印到标准输出或错误文件中他可以打印 在控制台或日志文件中具体位置应用的配置。 阅读全文

posted @ 2017-05-26 22:15 辰_雨_ 阅读(338) 评论(0) 推荐(0) 编辑

什么是 Busy spin?我们为什么要使用它?

摘要: Busy spin是一种在不释放CPU的基础上等待事件的技术。它经常用于避免丢失CPU的缓存 中的数据(如果线程先暂停,之后再其他CPU上运行就会丢失)。所以,如果你的工作要求 低延迟,并且你的线程目前没有任何顺序,这样你就可以通过循环检测队列中的新消息来代 替调用 sleep() 或 wait() 阅读全文

posted @ 2017-05-26 22:01 辰_雨_ 阅读(493) 评论(0) 推荐(0) 编辑

什么是多线程环境下的伪共享(false sharing)?

摘要: 伪共享是多线程系统(每个处理器有自己的局部缓存)中一个众所周知的性能问题。 伪共享发生在不同处理器上的线程对变量的修改依赖于相同的缓存行。 伪共享问题很难被发现,因为线程可能访问完全不同的全局变量,内存中确碰巧在 很相近的位置上。如其他诸多的并发问题,避免伪共享的最基本方式是仔细审查代码, 根据缓存 阅读全文

posted @ 2017-05-26 21:57 辰_雨_ 阅读(148) 评论(0) 推荐(0) 编辑

导航