From 00d4e8a8ed78d1a569a35cb0d5808a99a8bcdd9a Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 17 Apr 2017 20:38:17 +0300 Subject: [PATCH] extracted method "runUnderThreadName" --- .../src/com/intellij/util/ConcurrencyUtil.java | 11 +++++++++++ .../src/com/intellij/util/io/BaseDataReader.java | 16 +++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/platform/util/src/com/intellij/util/ConcurrencyUtil.java b/platform/util/src/com/intellij/util/ConcurrencyUtil.java index dcb3d9aad694..f0397312fef4 100644 --- a/platform/util/src/com/intellij/util/ConcurrencyUtil.java +++ b/platform/util/src/com/intellij/util/ConcurrencyUtil.java @@ -186,4 +186,15 @@ public class ConcurrencyUtil { public static void joinAll(@NotNull Thread... threads) throws RuntimeException { joinAll(Arrays.asList(threads)); } + + public static void runUnderThreadName(@NotNull String name, @NotNull Runnable runnable) { + String oldThreadName = Thread.currentThread().getName(); + Thread.currentThread().setName(name); + try { + runnable.run(); + } + finally { + Thread.currentThread().setName(oldThreadName); + } + } } diff --git a/platform/util/src/com/intellij/util/io/BaseDataReader.java b/platform/util/src/com/intellij/util/io/BaseDataReader.java index f6c523835f52..6d40463ed95f 100644 --- a/platform/util/src/com/intellij/util/io/BaseDataReader.java +++ b/platform/util/src/com/intellij/util/io/BaseDataReader.java @@ -17,6 +17,7 @@ package com.intellij.util.io; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.util.ConcurrencyUtil; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -55,15 +56,16 @@ public abstract class BaseDataReader { myFinishedFuture = executeOnPooledThread(new Runnable() { @Override public void run() { - String oldThreadName = Thread.currentThread().getName(); - if (!StringUtil.isEmptyOrSpaces(presentableName)) { - Thread.currentThread().setName("BaseDataReader: " + presentableName); - } - try { + if (StringUtil.isEmptyOrSpaces(presentableName)) { doRun(); } - finally { - Thread.currentThread().setName(oldThreadName); + else { + ConcurrencyUtil.runUnderThreadName("BaseDataReader: " + presentableName, new Runnable() { + @Override + public void run() { + doRun(); + } + }); } } });