1cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei/* 2cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * Copyright (C) 2013 The Android Open Source Project 3cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * 4cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * Licensed under the Apache License, Version 2.0 (the "License"); 5cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * you may not use this file except in compliance with the License. 6cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * You may obtain a copy of the License at 7cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * 8cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * http://www.apache.org/licenses/LICENSE-2.0 9cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * 10cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * Unless required by applicable law or agreed to in writing, software 11cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * distributed under the License is distributed on an "AS IS" BASIS, 12cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * See the License for the specific language governing permissions and 14cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei * limitations under the License. 15cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei */ 16cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei 17cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Weipackage com.android.bitmap; 18cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei 19cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Weiimport java.util.concurrent.Executors; 20cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Weiimport java.util.concurrent.ThreadFactory; 21cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Weiimport java.util.concurrent.atomic.AtomicInteger; 22cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei 23cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Weipublic class NamedThreadFactory implements ThreadFactory { 24cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei private final ThreadFactory mDefaultThreadFactory; 25cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei private final String mBaseName; 26cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei private final AtomicInteger mCount = new AtomicInteger(0); 27cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei 28cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei public NamedThreadFactory(final String baseName) { 29cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei mDefaultThreadFactory = Executors.defaultThreadFactory(); 30cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei mBaseName = baseName; 31cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei } 32cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei 33cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei @Override 34cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei public Thread newThread(final Runnable runnable) { 35cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei final Thread thread = mDefaultThreadFactory.newThread(runnable); 36cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei thread.setName(mBaseName + "-" + mCount.getAndIncrement()); 37cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei return thread; 38cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei } 39cea0c012d538f11b3ee97d4b7e78f4c1ea73d5beMark Wei} 40