谁能给我举例说明一下,怎么看出来StringBuffer是安全的,而StringBuilder是不安全的啊。
我是这样实现的:- //final StringBuffer sb = new StringBuffer ();
- final StringBuilder sb = new StringBuilder();
- new Thread (new Runnable () {
- public void run() {
- while (true) {
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- sb.append("====");
- //sb.delete(0, 4);
- System.out.println(sb);
- }
-
- }
-
- }).start();
- new Thread (new Runnable () {
- public void run() {
- while (true) {
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- sb.append("AAAA");
- //sb.delete(0, 4);
- System.out.println(sb);
- }
-
-
- }
-
- }).start();
复制代码 结果是:不管是用StringBuffer还是StringBuilder,都会按照====AAAA的顺序或者AAAA====的顺序老长,没有出现乱序的现象,也就是没有出现过==AA==A===A这样的现象。
我这个方法是否可以体现出来StringBuffer和StringBuilder在线程安全上的差异?只是运行的时间还不够长吗?
有没有更好的办法体现出来?? |
|