gpt4 book ai didi

java - 就 StringBuilder 和 StringBuffer 类而言,同步意味着什么?

转载 作者:搜寻专家 更新时间:2023-11-01 02:06:44 25 4
gpt4 key购买 nike

我对“同步”一词感到很困惑,我从 Java 文档中得到了关注。

A mutable sequence of characters. This class provides an API compatible with StringBuffer, but with no guarantee of synchronization. This class is designed for use as a drop-in replacement for StringBuffer in places where the string buffer was being used by a single thread (as is generally the case). Where possible, it is recommended that this class be used in preference to StringBuffer as it will be faster under most implementations.

据我所知,同步与线程及其访问方式有关。

比方说,我有一个 Web 应用程序,它在其中一种方法中使用了 StringBuilder,

  • 这里不保证同步是什么意思?
  • 我应该担心什么吗?我什么时候应该担心多线程?有什么例子吗?
  • 我什么时候应该关心有保证和无保证同步?
  • 拥有多线程网络应用程序的示例是什么?

一个例子将不胜感激。

请注意,我知道多线程访问需要同步,因为它们需要访问相同的数据!我需要举个例子。

最佳答案

如果多个线程可以同时访问同一个 StringBuilder 实例,您应该关心同步。在这种情况下,您应该考虑改用 StringBuffer

例如,在这里您应该考虑使用 StringBuffer 而不是 StringBuilder :

public class Test implements Runnable
{
public static StringBuilder sb = new StringBuilder();

public void run ()
{
Test.sb.append ("something");
}

public static void main (String[] args)
{
// start two threads
new Thread (new Test()).start();
new Thread (new Test()).start();
}
}

如果您有一个 StringBuilder 实例,它是某个方法的本地实例,则没有另一个线程访问它的风险,因此您不需要同步,并且使用 StringBuilder 会更有效率。

关于java - 就 StringBuilder 和 StringBuffer 类而言,同步意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31019367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com