Przejdź do głównej zawartości

StringBuilder vs Stringbuffer

StringBuilder naleyży używać jesli zamierzamy concat wiele stringów, StringBuilder został wprowadzony od Javy5.  StringBuffer to starsza wersja StringBuildera. StringBuffer trobi to samo jednak z punktu widzenia performance jest wolniejszy gdzyż jest thread safe


Thread Safety in Java 
Thread safety in java is the process to make our program safe to use in multithreaded environment, there are different ways through which we can make our program thread safe.

  •  Synchronization is the easiest and most widely used tool for thread safety in java. 
  • Use of Atomic Wrapper classes from java.util.concurrent.atomic package. For example AtomicInteger 
  • Use of locks from java.util.concurrent.locks package. 
  • Using thread safe collection classes, check this post for usage of ConcurrentHashMap for thread safety. 
  • Using volatile keyword with variables to make every thread read the data from memory, not read from thread cache.

Język Java również posiada słowo kluczowe volatile, lecz ma ona nieco inną specyfikację:

  • We wszystkich wersjach Javy istnieje globalna kolejność odczytów i zapisów do zmiennej z volatile. Dzięki temu każdy wątek mający do niej dostęp odczyta jej obecną wartość przed kontynuacją, zamiast (potencjalnego) wykorzystania zmiennej przechowywanej w pamięci podręcznej. 
  • Od Javy 5 zmienne z modyfikatorem volatile zachowują relację happens-before. Używanie volatile może być szybsze niż blokowanie, ale może też nie działać w niektórych wypadkach.

Komentarze

Popularne posty z tego bloga

Skrócony zapis if - instrukcja warunkowa java

Instrukcja warunkowa - warunek i rezultat. if (warunek) { jesli spełniony wykonań operacje i zwróć wynik; } warunek nie spełniony Możliwości skrócenia kodu instrukcji warunkowej if (i < 0) ? i-- : i++; Jeżeli i mniejsze od zera to i-- jezeli false to i++ if (i < 0) {     i--; } else {     i++; } Skrócony zapis instrukcji warunkowej else if (i < 0) ? i--;  inna_zmienna=4; : i++; if (i < 0) {     i--; } else {     i++;     inna_zmienna = 4; } Skrócony zapis if

String-1 > middleTwo

Given a string of even length, return a string made of the middle two chars, so the string "string" yields "ri". The string length will be at least 2. middleTwo("string") → "ri" middleTwo("code") → "od" middleTwo("Practice") → "ct" public String middleTwo ( String str ) { return str . substring (( str . length ()/ 2 - 1 ), str . length ()/ 2 + 1 ); }

String-1 > withouEnd2

Given a string, return a version without both the first and last char of the string. The string may be any length, including 0. withouEnd2("Hello") → "ell" withouEnd2("abc") → "b" withouEnd2("ab") → "" public String withouEnd2 ( String str ) { if ( str . length ()== 1 ){ return str . substring ( 1 ); } else if ( str . length ()== 0 ){ return str ; } return ( str . substring ( 1 , str . length ()- 1 )); }