@@ -45,6 +45,12 @@ abstract class BitmapHunter implements Runnable {
45
45
*/
46
46
private static final Object DECODE_LOCK = new Object ();
47
47
48
+ private static final ThreadLocal <StringBuilder > NAME_BUILDER = new ThreadLocal <StringBuilder >() {
49
+ @ Override protected StringBuilder initialValue () {
50
+ return new StringBuilder (Utils .THREAD_PREFIX );
51
+ }
52
+ };
53
+
48
54
final Picasso picasso ;
49
55
final Dispatcher dispatcher ;
50
56
final Cache cache ;
@@ -78,7 +84,7 @@ protected void setExifRotation(int exifRotation) {
78
84
79
85
@ Override public void run () {
80
86
try {
81
- Thread . currentThread (). setName ( Utils . THREAD_PREFIX + data . getName () );
87
+ updateThreadName ( data );
82
88
83
89
result = hunt ();
84
90
@@ -188,6 +194,16 @@ Picasso.LoadedFrom getLoadedFrom() {
188
194
return loadedFrom ;
189
195
}
190
196
197
+ static void updateThreadName (Request data ) {
198
+ String name = data .getName ();
199
+
200
+ StringBuilder builder = NAME_BUILDER .get ();
201
+ builder .ensureCapacity (Utils .THREAD_PREFIX .length () + name .length ());
202
+ builder .replace (Utils .THREAD_PREFIX .length (), builder .length (), name );
203
+
204
+ Thread .currentThread ().setName (builder .toString ());
205
+ }
206
+
191
207
static BitmapHunter forRequest (Context context , Picasso picasso , Dispatcher dispatcher ,
192
208
Cache cache , Stats stats , Action action , Downloader downloader ) {
193
209
if (action .getData ().resourceId != 0 ) {
0 commit comments