Junior
Java'da StringBuilder ve StringBuffer arasındaki farklar nelerdir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Ana temel fark, StringBuffer çok iş parçacıklı güvenli iken, StringBuilder güvenli değildir.
-
StringBuffer: Tüm metodları senkronized (synchronized) edilmiştir. Bu, aynı anda birden fazla iş parçacığıyla çalışırken güvenliği sağlar ve yalnızca bir iş parçacığının herhangi bir zamanda bir yöntemi çalıştırmasına izin verir. Ancak, bu aynı zamanda senkronizasyon maliyetleri nedeniyle performansı düşürür. -
StringBuilder: Metodlar senkronize edilmemiştir. Bu, onu tek iş parçacıklı ortamlardaStringBuffer'dan daha hızlı yapar. Birden fazla iş parçacığı tarafından dış senkronizasyon olmadan kullanıldığında, işlemler karışabilir ve yanlış sonuçlar ortaya çıkabilir.
Ne zaman kullanmalı:
- Tek iş parçacıklı uygulamalarda veya daha yüksek seviyede iş parçacığı güvenliği sağlandığında
StringBuilderkullanın. Daha hızlıdır. - Birden fazla iş parçacığının aynı nesneyi aynı anda değiştirebildiği çok iş parçacıklı uygulamalarda, yerleşik iş parçacığı güvenliği gerektiğinde
StringBufferkullanın.
Örnek:
// Tek iş parçacıklı ortamda `StringBuilder` (tercih edilir)
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" ").append("World");
System.out.println(sb.toString()); // "Hello World" yazdırır
// Çok iş parçacıklı ortamda `StringBuffer` (daha güvenli)
StringBuffer sbf = new StringBuffer();
// Gerçek çok iş parçacıklı senaryoda, iş parçacıkları sbf'ye erişir
sbf.append("Thread ").append(Thread.currentThread().getId());
System.out.println(sbf.toString()); // "Thread 1" veya "Thread 2" gibi bir şey yazdırır, iş parçacığına bağlı olarak