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