001/**
002 *
003 * Copyright 2014 Florian Schmaus
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.jivesoftware.smack.util;
018
019public class Async {
020
021    /**
022     * Creates a new thread with the given Runnable, marks it daemon, starts it and returns the started thread.
023     *
024     * @param runnable
025     * @return the started thread.
026     */
027    public static Thread go(Runnable runnable) {
028        Thread thread = daemonThreadFrom(runnable);
029        thread.start();
030        return thread;
031    }
032
033    /**
034     * Creates a new thread with the given Runnable, marks it daemon, sets the name, starts it and returns the started
035     * thread.
036     *
037     * @param runnable
038     * @param threadName the thread name.
039     * @return the started thread.
040     */
041    public static Thread go(Runnable runnable, String threadName) {
042        Thread thread = daemonThreadFrom(runnable);
043        thread.setName(threadName);
044        thread.start();
045        return thread;
046    }
047
048    public static Thread daemonThreadFrom(Runnable runnable) {
049        Thread thread = new Thread(runnable);
050        thread.setDaemon(true);
051        return thread;
052    }
053}