博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开发中的小技巧
阅读量:5100 次
发布时间:2019-06-13

本文共 965 字,大约阅读时间需要 3 分钟。

1.捕获了异常后,如何获取完整的堆栈轨迹(stack trace)

String fullStackTrace =org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(e)Thread.currentThread().getStackTrace();

2.实现Runnable接口 VS. 继承Thread类

一般而言,推荐使用方式(1),主要是由于大多数情况下,人们并不会特别去关注线程的行为,也不会去改写Thread已有的行为或方法,仅仅是期望执行任务而已。 因此,使用接口的方式能避免引入一些并不需要的东西,同时也不会影响继承其他类,并使程序更加灵活。
额外的tips :Runnable与Thread不是对等的概念 在Thinking in Java中,作者吐槽过Runnable的命名,称其叫做Task更为合理。 在Java中,Runnable只是一段用于描述任务的代码段而已,是静态的概念,需要通过线程来执行。而Thread更像是一个活体,自身就具有很多行为,能够用来执行任务。仅仅当你确实想要重写(override)一些已有行为时,才使用继承,否则请使用接口。
3.HashMap和Hashtable的区别? 哪一个对于多线程应用程序更好?
Hashtable是同步的,加了synchronized锁,而HashMap不是。没有加synchronized锁的对象,性能通常比加了synchronized锁的对象要更好一些,因此,如果是非多线程程序,不需要考虑锁、同步等问题,那么使用HashMap更好。
Hashtable不允许有空的键或值。HashMap允许空键和空值。
HashMap有一个子类LinkedHashMap,对这个类对象进行迭代时,它的顺序是有序的(按插入顺序排序)。如有需要,你也能轻易的从LinkedHashMap转化成HashMap。Hashtable就没那么简单了,
总之,如果你无需关心同步(synchronized)问题,我会建议用HashMap。反之,你可以考虑使用ConcurrentHashMap

转载于:https://www.cnblogs.com/likailun/p/8877418.html

你可能感兴趣的文章
jQuery给标签写入内容
查看>>
【GoLang】golang 微服务框架 介绍
查看>>
【OpenStack】OpenStack系列10之Horizon详解
查看>>
音效引擎
查看>>
基尔霍夫定律
查看>>
Ubuntu下安装libpcap+测试安装
查看>>
Android activity间通讯几种方式
查看>>
iOS中遇到Unkown type name NSString Unkown type name CGFloat
查看>>
黑马程序员_JavaScript变量转换和Jquery对象的转换
查看>>
AMP模式下共享内存通信的两种定义方法
查看>>
Offline Package Installation II
查看>>
2017-07-19
查看>>
Spring-JDBC实现Contact的CRUD
查看>>
tornado上手
查看>>
PHP基础加固8——控制结构1
查看>>
学霸系统UI部分功能规格说明书
查看>>
android 与C# UDP通信
查看>>
Android 8 Wifi 初始化过程
查看>>
Oracle 用拼接字符串更新表 测试
查看>>
Java技术第四次作业
查看>>