什么是多线程环境,什么是单线程环境?

图片说明

StringBuffer是安全的,StringBuilder是不安全的,那么这个多线程环境具体是指什么呢?
请问下Java Web项目当中,action类属于什么多线程环境吗?

4个回答

多线程环境就是应用程序中启动了多个线程,共享变量可能同时被多个线程同时访问的场景,如果是这样的话,对这些共享变量的访问必须做同步处理才能保证数据的一致性。StringBuilder类的方法作了同步即使用了synchronized加锁,所以能保证共享数据的正确,是线程安全的,而StringBuffer没有,所以是不安全的。
单线程环境就是整合应用程序中只有一个主线程,没有其他线程竞争。多线程环境下必须进行数据同步处理,才能保证正常的逻辑。
wojiushiwo945you
毕小宝 回复满月Online: 共享变量不是指成员变量,而是指可以由多个线程同时访问的变量,例如某个对象,因为对象是堆内存中,是所有线程共享的,而多个线程可以通过该对象访问对象的属性时,如果不同步就可能出现数据不一致。
4 年多之前 回复
u010264733
满月Online StringBuffer和StringBuilder的安全性描述错了。共享变量除了成员变量还指什么么?
4 年多之前 回复

一个string类型的变量值经历过多个线程的操作

action是曝露在多线程环境下的,因为它是单例对象,但是每个请求都是由一个线程处理的,线程共享同一个action就涉及到线程同步问题。

如果StringBuilder属于多个线程同时操作的共享资源时,则处于多线程环境,容易出现线程安全问题,所以不建议使用StringBuilder;而StringBuffer内部实现线程同步机制,当多个线程同时操作StringBuffer时不会导致线程安全问题。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问