验证StringBuilder线程不安全
2016-07-29 21:16
417 查看
代码实现验证StringBuilder线程不安全
初级Java工程师有可能被问及,具体实现如下:package test; /** * @author banjuer * 该类用于测试StringBuilder为线程不安全的 * --思路: * 要达到验证齐为线程不安全,应该通过多个线程调用同一个对象方法. * --实现: * 1.创建一个StringBuilder对象sb传入"0000011111" * 2.多个线程同时调用sb对象的reverse * 3.当结果出现01混合状态时,则验证了线程不安全 */ public class SBuilderDemo{ public static void main(String[] args) { StringBuilder sb=new StringBuilder("0000011111"); //循环创建多个线程 for(int i=0;i<100;i++){ new Thread(new MyThread(sb)).start(); } } //写一个线程类 //类为静态的,因为创建对象是在静态的主方法中 private static class MyThread implements Runnable{ //定义成员属性 private StringBuilder sb; //传入参数 private MyThread(StringBuilder sb){ this.sb=sb; } public void run() { //这一步循环,可以增加出现线程不安全的该路 //循环调用sb的reverse() for(int i=0;i<100;i++){ sb.reverse(); } //输出sb字符串(此处默认调用了toString()) System.out.println(sb); } } }
实验结果如下:
相同代码StringBuffer结果如下:
源码分析:
*个人学习仅供参考!
相关文章推荐
- StringBuffer,StringBuilder,ArrayList,Vector线程安全验证程序
- 代码验证java的StringBuffer是线程安全而StringBuilder是线程不安全的
- Java中线程安全与线程非安全ArrayList,Vector 和 HashMap,Hashtable 和StringBuffer,StringBuilder
- 关于java中的StringBuilder的线程安全问题
- 一个验证HashMap在多线程环境下线程不安全的例子及dump分析
- 证明StringBuffer线程安全,StringBuilder线程不安全
- 验证ArrayList线程不安全,redisson提供的分布式集合线程安全
- StringBuffer线程安全StringBuilder线程不安全
- StringBuffer JDK1.0出现是线程安全的 StringBuilderJDK1.5出现是线程不安全的
- 字符拼接StringBuilder速度快,但StringBuilder是线程不安全的。(StringBuffer是线程安全的,给buffer加锁)
- String,StringBuffer与StringBuilder的区别|线程安全与线程不安全
- 根据StringBuffer、StringBuilder想起的的线程安全与线程不安全
- 怎么理解Stringbuffer是线程安全的stringbuilder是线程不安全的
- 怎么理解StringBuffer线程安全,StringBuilder线程不安全
- String,StringBuffer与StringBuilder的区别|线程安全与线程不安全
- 线程安全单例设计模式+序列化
- java线程安全
- PHP的线程安全与非线程安全版本的区别
- threadLocal线程安全介绍
- 【WCF安全】使用X509证书自定义验证