我々はいくつかのスレッドが、次のような静的メソッドを呼び出すシナリオを持っている:同時アクセス
public static boolean isEmpty(final String s) {
return s == null || s.length() < 1;
}
100件のスレッドがそれを呼び出す場合には、不整合の問題を引き起こす可能性が?
我々はいくつかのスレッドが、次のような静的メソッドを呼び出すシナリオを持っている:同時アクセス
public static boolean isEmpty(final String s) {
return s == null || s.length() < 1;
}
100件のスレッドがそれを呼び出す場合には、不整合の問題を引き起こす可能性が?
いいえこれは、並行性の問題がありません。
1)あなたが渡すパラメータは不変クラスである文字列(その値を変更できない)
2)であり、この方法は、任意の共有状態を変更しようとしない
パラメータが変更可能であれば違いますか?例えば、関数のシグネチャが 'public static boolean isEmpty(String s){...}'の場合、 – broadband
方法ありません共有状態にはアクセスしません。したがって、いいえ、問題は発生しません。
いいえ、共有状態がないためです。このメソッドを同じ文字列s
で呼び出しても、String
は不変でスレッドセーフなので、それでも安全です。
BTW StringUtils.isEmpty()
Apache Commonsのメソッドも同じことをします。
「がS」は、渡された変数であることと、それを呼び出す100件のスレッドの場合には問題
's.length()== 0 'は' sのより安いがあってはならない他の方法で定義されているものはありません.length()<1'であり、Stringの長さはゼロ未満ではありません。 – sudocode
@sudocodeまたは 'String.isEmpty'を使用してください。 –