有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

字符串Utils Java

我创建了一个StringUtil类,用于在整个应用程序中进行字符串验证。StringUtil的代码如下:

public class StringUtil {
    public static synchronized boolean isValidString(String string) {
        return string!= null && string.trim().length() > 0;
    }

}

在这个类中,该方法检查字符串是否为有效字符串。这种方法是线程安全的。在企业应用程序中,可能有多个线程访问此方法。如果一个线程正在访问这个方法,那么所有其他线程都必须等待轮到它。这个方法将被频繁地用来检查字符串的空值。那么,哪一个是最好的选择

  1. 使其成为单体和线程安全
  2. 将此作为实例方法
  3. 有没有其他方法可以用这种类型的对象组织一个池,每个线程都会选择一个,然后在完成后将对象释放到池中。因此线程安全不是一个问题,对象创建也没有完成
  4. 有没有同样的开源库

共 (4) 个答案

  1. # 1 楼答案

    您可以尝试Apache Commons中的util类

    但无论如何,这里都有线程安全性,因为您没有操作类中其他调用可能读取的任何内容(即,您没有状态)

  2. # 2 楼答案

    此方法不应同步,因为它不使用任何类级变量。因此,多个线程可以同时访问它,而不会出现任何问题

    此外,在为运行在容器中的企业应用程序编写代码时,请忘记同步。注意线程安全是容器的责任synchronized块只会妨碍容器完成其工作。如果您需要在企业应用程序中进行同步,请重新考虑您的设计和/或找到其他模式(有很多)来解决您的问题

  3. # 3 楼答案

    因为这里没有任何状态(只使用方法参数^{),所以该方法本质上是线程安全的。因此,没有必要使用synchronized关键字

    如果该方法在整个项目中都使用,那么最好的选择就是像您已经做的那样声明它static

  4. # 4 楼答案

    您可能应该在Apache Commons中使用^{}