LeetCode刷题记录

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类修饰的各种情况是什么意思?
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,817评论 18 399
  • 夜里雨水拍打在地上,滴答滴答的响着 耳机里播放的蓝调透露着一种忧郁感。我心里面的那片小河,慢慢的泛着波澜,我的身子...
    Aroura阅读 322评论 0 0
  • 第一次画,感觉很有趣
    Wei_93e3阅读 356评论 0 0