1, UUID类库
UUID根据时间戳实现自动无重复字符串定义
//获取UUID 公共静态UUID randomUUID ()//根据字符串获取UUID 公共静态UUID fromString(字符串名称)
应用:对文件进行自动命名处理
进口java.util.UUID; 课堂演示{ 公共静态void main (String [] args) { System.out.println (UUID.randomUUID ());//85 a8ccb1 - 88 - f8 - 4 - b3c - 833 d d45b58e0204e System.out.println (UUID.fromString (“85 a8ccb1 - 88 - f8 - 4 - b3c - 833 d d45b58e0204e "));//85 a8ccb1 - 88 - f8 - 4 - b3c - 833 d d45b58e0204e } }
2,可选类库
可选的主要功能是进行零空指针处理
JDK祝辞=1.8
示例:单独处理空参数
类消息{ 私人字符串消息; 公共消息(字符串消息){ 这一点。消息=消息; } 公共字符串getMessage () { 返回this.message; } } 课堂演示{ 公共静态孔隙showMessage(消息消息){ 如果(消息!=null) { System.out.println (message.getMessage ()); } } 公共静态void main (String [] args) { 消息消息=新消息(“这是消息”); showMessage(消息); showMessage(空); } }
几个方法
最后公共类Optional{ 公共static Optional 空(){ @SuppressWarnings(“unchecked”) Optional t=(Optional Optional (T值){ 返回新Optional<祝辞(价值); } 公共静态& lt; T>Optional ofNullable (T值){ 返回值=https://www.yisu.com/zixun/=零?空():(价值); } 公共T get () { 如果(值==null) { 把新NoSuchElementException(“没有价值”); } 返回值; } 公共T orElse (T) { 返回值!=null & # 63;价值:其他; } }
使用示例
进口java.util.Optional;/* * *存入 */OptionaloptOf=Optional.of(“信息”);//Optional optOfNull=Optional.of(空);//java.lang.NullPointerException Optional optOfNullable=Optional.ofNullable(“信息”); Optional optOfNullableNull=Optional.ofNullable(空);/* * *取出 */System.out.println (optOf.get ());//消息 System.out.println (optOfNullable.get ());//消息//System.out.println (optOfNullableNull.get ());//java.util。NoSuchElementException:没有价值 System.out.println (optOf.orElse(“违约”));//消息 System.out.println (optOfNullable.orElse(“违约”));//消息 System.out.println (optOfNullableNull.orElse(“违约”));//默认
自定义函数实现
课堂演示{ getDefault公共静态字符串(字符串对象、字符串defaultValue) { 返回对象!=null & # 63;对象:defaultValue; } 公共静态void main (String [] args) { system . out。println (getDefault(“信息”、“默认”));//消息 system . out。println (getDefault (null,“默认”));//默认 } }
3, ThreadLocal类库
ThreadLocal解决线程同步问题
公共T get () 公共空集(T值) 公共空间remove ()
定义发送消息类
类消息{ 私人字符串消息; 公共消息(字符串消息){ 这一点。消息=消息; } 公共字符串getMessage () { 返回this.message; } } 类频道{ 私有静态消息消息; 公共静态孔隙setMessage(消息味精){ 消息=味精; } 公共静态无效发送(){ System.out.println (message.getMessage ()); } }
单线程下运行
课堂演示{ 公共静态void main (String [] args) { 消息消息=新消息(“你”好); Chanel.setMessage(消息); Chanel.send ();//你好 } }
多线程下运行,出现数据覆盖现象
课堂演示{ 公共静态void main (String [] args) { 新线程(()→{ 通道。setMessage(新消息(“你好1 ")); Channel.send (); },"线程1”).start (); 新线程(()→{ 通道。setMessage(新消息(“你好2 ")); Channel.send (); },"线程2”).start (); 新线程(()→{ 通道。setMessage(新消息(“你好3 ")); Channel.send (); },"线程3”).start ();/* * *线程2你好3 *线程1你好1 *线程3你好3 */} }JAVA开发常用类库UUID、可选的,ThreadLocal, TimerTask, Base64使用方法与实例详解