一、基础1

2019-06-08  本文已影响0人  小菜鸡的看书过程

cpu核心数和线程数的欢喜

cpu时间偏轮转机制

什么是进程和线程

并行、并发

并发好处和问题

新启线程的方式(3种)

public class NewThread  {


    static class StartThread extends Thread {
        @Override
        public void run() {
            System.out.println("extends Thread");
        }
    }

    public static void main(String []args) {
        Thread thread = new StartThread();
        thread.start();;
    }

}
public class NewThread  {


    static class StartThread implements Runnable {
        @Override
        public void run() {
            System.out.println("implements Runnable");
        }
    }

    public static void main(String []args) {
        Thread thread = new Thread(new StartThread());
        thread.start();;
    }

}

这个和runnable区别是可以得到返回值的,可通过featureTask.get() 取到
因为Thread方法没有接收callable的构造方法,
public class FutureTask<V> implements RunnableFuture<V>
public interface RunnableFuture<V> extends Runnable, Future<V>
所以 我们可以拿 FutureTask 包装一下 Callable 然后传给Thread

public class NewThread  {


    //有返回值
    static class StartThread implements Callable<String> {

        @Override
        public String call() throws Exception {
            return "implements Callable";
        }
    }

    public static void main(String []args) throws ExecutionException, InterruptedException {
        FutureTask <String> featureTask = new FutureTask<>(new StartThread());
        Thread thread = new Thread(featureTask);
        thread.start();
        System.out.print(featureTask.get());
    }

}

线程自然终止,自然执行完或抛出未处理异常
stop 会导致线程不会正确释放资源、resume()、supend()容易导致死锁已经不建议使用

上一篇下一篇

猜你喜欢

热点阅读