美文网首页
19.2.23-StringBuilder并不是线程安全的

19.2.23-StringBuilder并不是线程安全的

作者: 吹不动的林献计 | 来源:发表于2019-02-23 17:56 被阅读0次

示例如下代码中的加粗部分,StringBuilder在循环外:

public static void main(String[] args)throws IOException {

File file =new File("C:\\Users\\zexinlin\\Desktop\\123.csv");

    if (file.isDirectory())

{

System.out.println("文件打开失败!");

    }

File outFile =new File("C:\\Users\\zexinlin\\Desktop\\testWorst.sql");

    if(!file.exists())

   file.createNewFile();

    InputStream instream =new FileInputStream(file);

    InputStreamReader inputreader =new InputStreamReader(instream);

    BufferedReader buffreader =new BufferedReader(inputreader);

    FileOutputStream out =new FileOutputStream(outFile);

    String readline;

    int count =0;

  StringBuilder sb =new StringBuilder();

    while((readline = buffreader.readLine() )!=null){

        count++;

        StringTokenizer st =new StringTokenizer(readline,"\t",false);

        sb.append("UPDATE \n sps_active_rp_detail t \n");

        sb.append("SET \n t.`status`=0,\n ");

        sb.append("t.`update_name`=SYSDATE(),\n ");

        sb.append("t.`orderid`='',\n ");

        sb.append("t.`rp_amount`=0.00,\n ");

        sb.append("t.`order_amount`=0.00 \n ");

        sb.append("WHERE ");

        sb.append("t.`userid`='");

        sb.append(st.nextToken()+"'\n ");

        sb.append(" AND t.`orderid`='");

        sb.append(st.nextToken()+"'\n ");

        sb.append(" AND t.`status`=2;\n ");

        sb.append("\n");

        out.write(sb.toString().getBytes("utf-8"));

    }

System.out.println("Count is "+count);

    buffreader.close();

    inputreader.close();

    instream.close();

    out.close();

}

输出次数会远比count的计数大得多(16MB左右,7W多行)

而将StringBuilder包在for循环内部后,输出次数即为count的计数

相关文章

  • 19.2.23-StringBuilder并不是线程安全的

    示例如下代码中的加粗部分,StringBuilder在循环外: public static void main(S...

  • Collections.synchronizedList

    大家都知道ArrayList并不是线程安全的,如果想要做到线程安全,我们可以使用 Collections.sync...

  • Android 跨线程更新 UI

    在 Android 中,视图组件并不是线程安全的。出于线程保护,Android 会拒绝子线程对主线程 UI 的更新...

  • 「Java面试必会」谈谈并发包java .util.concur

    说到集合,就知道有的集合类并不是线程安全的,那Java中怎么保证集合是线程安全的? java .util.conc...

  • 学习笔记

    UI操作为什么在主线程? UIKit线程安全性:UIKit并不是一个线程安全的类,UI操作涉及到渲染访问各种Vie...

  • 2019-04-21——Java并发包 锁 线程安全

    线程安全问题的发生 多个线程同时访问一个资源时,会导致程序运行结果并不是想看到的结果,这个就是线程安全问题;这里面...

  • 深入了解Handler的消息传递机制

    出于性能优化的考虑,android的UI操作并不是安全的,如果有多个线程并发操作UI组件,则可能导致线程安全问题....

  • 多线程详解之基础

    安全是多线程编程的核心主题,但并不是只要使用多线程就一定会引发安全问题。要了解哪些操作是安全的,哪些是不安全的,就...

  • Java的CopyOnWriteArrayList

    简介 ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于f...

  • 双重检查 单例模式

    单例模式 上述代码并不是线程安全的因为singleDecl = SingleDecl.getInstance();...

网友评论

      本文标题:19.2.23-StringBuilder并不是线程安全的

      本文链接:https://www.haomeiwen.com/subject/fnqudqtx.html