美文网首页
LeetCode刷题记录

LeetCode刷题记录

作者: lazysong | 来源:发表于2018-08-14 12:08 被阅读0次

    1. String, StringBuilder, StringBuffer的比较

    要进行字符串的翻转,可以直接使用java的StringBuffer.reverse()
    String,StringBuffer和StringBuilder的区别
    String其实是一个final的类,每次修改一个String对象,其实都是从常量池分配一个新的,而不是在原来的对象上进行修改
    StringBuffer和StringBuilder在修改的时候,都是在原有的对象基础上进行修改,这点不同于String
    StringBuffer可以在多线程的环境中保证正确运行,而StringBuilder只能在单线程的环境中使用,不是线程安全的。但是StringBuilder在大多数实现下都快于StringBuffer。

    2. 什么是线程安全?

    线程安全问题发生的前提

    1. 线程安全首先是发生在多线程的环境中
    2. 多个线程必须操纵同一个对象,如果每个线程操纵的都是不同的对象,则不会发生线程安全问题
    3. 必然包含修改操作,如果多个线程只是读取一个对象,那么也不存在线程安全的问题

    java中哪些数据可能会被线程共享,哪些不会呢?这个需要参考jvm的内存分配方式,一般来说,对象的成员和静态变量会被线程共享。局部变量则不会。
    java对单个对象共享的一些方式
    线程安全原理性分析

    1. JVM的内存分配策略是什么?
      Java中线程自己拥有哪些资源,共享哪些资源?
    2. java中被final类修饰的各种情况是什么意思?
    3. C++中被final类修饰的各种情况是什么意思?

    相关文章

      网友评论

          本文标题:LeetCode刷题记录

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