Dan*_*own 5 java stringbuilder multithreading stringbuffer
我对“同步”这个术语很困惑,我从java文档中得到了以下信息。
可变的字符序列。此类提供了与 StringBuffer 兼容的 API,但不保证同步。此类设计为在单个线程使用字符串缓冲区的地方(通常是这种情况)用作 StringBuffer 的直接替代品。如果可能,建议优先使用此类而不是 StringBuffer,因为它在大多数实现下会更快。
据我所知,同步与线程及其访问方式有关。
可以说,我有一个 Web 应用程序在其方法之一中使用 StringBuilder,
一个例子将受到高度赞赏。
请注意,我知道多线程访问需要同步,因为它们需要访问相同的数据!我需要一个例子来说明这一点。
如果多个线程可以StringBuilder同时访问同一实例,您应该关心同步。在这种情况下,您应该考虑使用StringBuffer。
例如,在这里您应该考虑使用 aStringBuffer代替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();
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有一个StringBuilder对于某些方法而言是本地的实例,则不存在另一个线程访问它的风险,因此您不需要同步,并且使用StringBuilder会更有效。