代码验证java的StringBuffer是线程安全而StringBuilder是线程不安全的
来源:互联网 发布:剑网三dbm数据下载 编辑:程序博客网 时间:2024/05/21 14:41
package practice; //通过反转字符串来验证StringBuffer是线程安全而StringBuilder是线程不安全的 public class Practice { public static void main(String[] args) { /* * 声明个字符串s,用下划线和井号是因为两个比较好区分。 分别实例化sf和sd两个对象 */ String s = "####____"; StringBuffer sf = new StringBuffer(s); StringBuilder sd = new StringBuilder(s); /* * 对sf和sd各自实例化两个反转他们的类 */ ThreadReverseString sfr1 = new ThreadReverseString(sf); ThreadReverseString sfr2 = new ThreadReverseString(sf); ThreadReverseString sdr1 = new ThreadReverseString(sd); ThreadReverseString sdr2 = new ThreadReverseString(sd); /* * 启动这四个线程,此时sf和sd各自有两个线程在对他们进行字符串反转操作 */ new Thread(sfr1).start(); new Thread(sfr2).start(); new Thread(sdr1).start(); new Thread(sdr2).start(); } } class ThreadReverseString implements Runnable { /* * 这个类用来完成字符串的反转工作,使用了Runnable接口来实现多线程 times是用来表示循环多少次的 * 因为懒的再写一个变量所以用了一个Object类型的s,后面再转化 */ public Object s = null; int times = 200; /* * 两个构造方法把s传进来 */ public ThreadReverseString(StringBuffer s) { this.s = s; } public ThreadReverseString(StringBuilder s) { this.s = s; } /* * 复写run方法实现多线程 在我的电脑上大概循环200次可以看到效果了,也许换了电脑就得多试几次或者增加循环次数了 */ public void run() { for (int i = 0; i <= times; i++) { /* * 似乎sleep一小段效果会好一些 奇奇怪怪的输出格式只是为了便于比较 */ try { Thread.sleep(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (s instanceof StringBuffer) { ((StringBuffer) s).reverse(); System.out.println("BUFFER->" + s); } else if (s instanceof StringBuilder) { ((StringBuilder) s).reverse(); System.out.println(" " + s + "<-builder"); } } } } /* * 最后看一下控制台的输出会发现反转后出现井号和下划线交错的都是StringBuilder的输出 */
阅读全文
0 0
- 代码验证java的StringBuffer是线程安全而StringBuilder是线程不安全的
- 验证java的StringBuffer是线程安全而StringBuilder是线程不安全的
- 怎么理解Stringbuffer是线程安全的stringbuilder是线程不安全的
- 字符拼接StringBuilder速度快,但StringBuilder是线程不安全的。(StringBuffer是线程安全的,给buffer加锁)
- Java:代码验证 StringBuffer 线程安全,StringBuilder 非线程安全
- StringBuffer JDK1.0出现是线程安全的 StringBuilderJDK1.5出现是线程不安全的
- StringBuffer线程安全StringBuilder线程不安全
- 证明StringBuffer线程安全,StringBuilder线程不安全
- 根据StringBuffer、StringBuilder想起的的线程安全与线程不安全
- String,StringBuffer与StringBuilder的区别|线程安全与线程不安全
- String,StringBuffer与StringBuilder的区别|线程安全与线程不安全
- SimpleDateFormat是线程不安全的,怎样使用使其安全?
- 验证StringBuilder线程不安全
- StringBuffer与StringBuilder的线程安全性验证
- StringBuffer与StringBuilder的线程安全性验证
- StringBuffer与StringBuilder的线程安全性验证
- Stringbuffer的线程安全是怎么实现的
- HashMap为什么是线程不安全的?
- 日志记录包Log4Net使用
- spring cloud版分布式任务平台(xxl -job)
- 先序遍历、中序遍历、后序遍历序列的详解
- [svn] linux命令——svn基础-版本管理
- Hadoop系列~环境搭建,单机/伪分布式配置(一)
- 代码验证java的StringBuffer是线程安全而StringBuilder是线程不安全的
- php 操作redis容易发生的问题
- SDK的tools目录下没有Templates目录
- Python 批量删除文件夹下面指定类型的所有文件
- 计算机网络实验Programming实验
- spring-boot读取props和yml配置文件
- 判断输入金额,很完善
- jmeter环境变量的配置
- redis实现阻塞轮训队列