StringBuffer是线程安全的,适用于需要在多线程环境下进行操作的场景。 代码示例 以下是一个使用StringBuffer的代码示例: publicclassStringBufferExample{publicstaticvoidmain(String[]args){StringBuffersharedBuffer=newStringBuffer("Initial String");Runnabletask=()->{for(inti=0;i<5;i++){sharedBuffer.append("...
百度试题 结果1 题目java中String是线程安全的吗?( ) A. 不是 B. 是 相关知识点: 试题来源: 解析 B 反馈 收藏
虽然String对象本身是线程安全的,但当我们在多线程环境中共享可变对象(例如StringBuilder或StringBuffer)时,就需要小心了。 StringBuffer 的例子 StringBuffer是一个线程安全的可变字符串类,与String不同,它允许在不创建新对象的情况下修改字符串。以下是一个StringBuffer的例子: publicclassStringBufferExample{publicstaticv...
同时设计成不可变的情况下,它就是线程安全的,即便在其他线程修改了值,那么也是创建或者引用已存在的对象,而不是修改当前的值。同时它对于安全性也是十分有保障的,一个不可变的内容,我们认为是可信的,如果可以随意的更改它的值,就太不可信了。String设计如何实现不可变的?先看一下jdk1.8中的源码 public fi...
String s1 = "hello"; String s2= "world"; String s3= "helloworld"; System.out.println(s3==(s1+s2));//falseSystem.out.println(s3==("hello"+"world"));//true s3==(s1+s2)的结果是false,是因为变量相加是先在常量池中开辟空间,然后将拼接后的字符串放入开辟的空间之中,因此地址会改变。
String是不可变类,所以是线程安全的。1、所有不可变类都是线程安全的,线程安全的类不一定是不可变类,如StringBuffer是可变类,靠锁实现线程安全。2、StringBuffer方法上都加了synchronized,StringBuilder没有,StringBuilder在多线程情况下是会出现问题,但是线程安全线程非安全指的是你业务环境需要线程安全...
StringBuffer是线程安全的,使用Synchronized锁。 StringBuilder是线程不安全的。 7、下面的代码输入什么? String s1 = "abc"; StringBuffer s2=newStringBuffer(s1); System.out.println(s1.equals(s2)); 输入false,因为s2不是String类型,String的equals方法进行了类型判断。同时s1和s2是两个对象,分别两个堆内存地址...
安全性:不可变性使得String在多线程环境下是线程安全的。多个线程可以同时访问和共享String对象,而无需...