/*
 Copyright 2008 Peter Lawrey

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */
package org.freshvanilla.utils;

import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;

public class NamedThreadFactory implements ThreadFactory {
    private final String name;
    private final AtomicInteger counter = new AtomicInteger();
    private final int priority;
    private final boolean daemon;

    public NamedThreadFactory(String name, int priority, boolean daemon) {
        this.name = name;
        this.priority = priority;
        this.daemon = daemon;
    }

    public Thread newThread(Runnable r) {
        String name = this.name;
        int id = counter.incrementAndGet();
        if (id > 1)
            name += ':' + id;
        Thread t = new Thread(r, name);
        t.setPriority(priority);
        t.setDaemon(daemon);
        return t;
    }
}
