JAVA日期安全格式化之SimpleDateFormat和jodaTime,DateTimeFormatter

线程不安全的日期格式化库,JAVA8中线程安全的日期转换类,JAVA8中自带,直接可以使用,不需要引入其它的库,线程安全的格式化库

StringBuilder与StringBuffer

因此StringBuilder是线程不安全类,StringBuilder为线程不安全类,因此不存在线程不安全问题,StringBuffer使用synchronized保证线程安全

Java线程封闭

ThreadLocal线程封闭:Java中提供一个 类来实现线程封闭,这个类使线程中的某个值与保存值的对象关联起来,核心的五个操作:创建,创建并赋初始值,赋值,取值,删除,多线程访问同一个方法时,方法中的局部变量会被拷贝一份到线程栈中,在其他层调用时直接通过ThreadLocal对象获取

Java线程安全策略

创建后状态不能被修改的对象叫做不可变对象. 不可变的对象天生就是线程安全的. 不可变对象的常量(变量)是在构造函数中创建的,既然它们的状态永远无法被改变,那么它们永远就是线程安全的,引用类型变量,在初始化后就不能指向别的引用,提供 工具类,在类中提供了多种不允许修改的方法,对象创建以后其状态就不能修改

Java安全的发布对象

在静态初始化函数中初始化一个对象的引用(不推荐),缺点:用不用都会初始化对象,如果初始化工作较多,加载速度会变慢,影响系统性能,将对象的引用保存到 类型或 对象中(推荐),在静态初始化函数中初始化一个对象引用

Java多线程之有序性

另外,JVM具备一些先天的有序性,即不需要额外的手段就能保证有序性,即Happens-before原则,如果两个操作的执行次序,没有办法通过Happens-before原则推导出来,虚拟机进行随意的重排序,那么就不能保证有序性,, , 通过 , , 保证一定的有序性, , 保证每一时刻只有一个线程可以执行同步代码块,相当于让线程顺序执行同步代码,从而保证有序性,线程中断规则:对线程interrupt()方法的调用先行发生于被中断线程的代码检测到中断事件的发生,线程启动规则:Thread对象的start()方法先行发生于此线程的每个一个动作

多线程之线程可见性synchronized

可以看到线程 A 之前在同一个锁保护的同步代码块中的所有操作结果,那么线程 B 都可以看到线程 A unlock M 之前的操作,线程 B 随后进入由同一个锁保护的同步代码块,那么线程 B 就不一定能看到线程 A 中的操作

Java多线程之可见性之volatile

对 变量进行写操作时,会在写操作后加入一条 屏障指令,将工作内存变量值刷新到主内存,通过加入内存屏障和禁止重排序优化来实现,保证可见性不保证原子性,对变量的写操作不依赖当前值,这样就会出现线程不安全问题

AtomicStampedReference解决CAS的ABA问题

从而解决ABA问题,线程将某个变量值由A修改为B,ABA解决方案,把变量的版本号进行更新

Shell三大利器之grep

搜索多个文件并查找匹配文本在哪些文件中:,在 grep 搜索结果中包括或者排除指定文件:,统计文件或者文本中包含匹配字符串的行数 -c 选项:,grep 递归搜索文件

入门小站