zoukankan      html  css  js  c++  java
  • 多线程:创建线程

    使用Thread

    如下,需要重载Thread类的run方法

        private static void runThread() {
            Thread thread = new Thread("t1"){
                @Override
                public void run() {
                    log.info("running");
                }
            };
            thread.start();
        }
    

    注意:调用thread.run()也可以通过编译运行,但是不能新建一个线程,而是在当前线程中调用run()方法,作为一个普通的方法调用。(串行执行Thread中的run方法)

    实现Runnable接口

    因为Thread类中有一个这样的构造方法:

        public Thread(Runnable target) {
            init(null, target, "Thread-" + nextThreadNum(), 0);
        }
    

    所以我们可以实现Runnable接口去新建一个线程

        private static void runThread2(){
            Runnable runnable = new Runnable(){
                @Override
                public void run() {
                    log.info("running1");
                }
            };
            Thread thread = new Thread(runnable);
            thread.start();
        }
    

    使用java8的新特性lambda:

        private static void runThread3(){
            Runnable runnable = () -> log.info("running");
            Thread thread = new Thread(runnable);
            thread.start();
        }
    

    推荐使用这种方法!

    FutureTask配合Thread

    FutureTask能够接收Callable类型的参数,用来处理有返回结果的情况。
    FutureTask继承关系:

        private static Integer runThread() {
            FutureTask<Integer> futureTask = new FutureTask<>(() -> 1);
            Thread thread = new Thread(futureTask);
            thread.start();
            try {
                return futureTask.get();
            } catch (InterruptedException | ExecutionException ignored) {
            }
            return 0;
        }
    
  • 相关阅读:
    java反编译工具
    Eclipse反编译插件: Jodeclipse与JadClipse
    Apk修改利器:ApkToolkit v2.1
    新浪微博2.5.1 for Android 去广告
    java
    第K顺序统计量
    身份证号码
    pop3
    google
    Exception
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/13667278.html
Copyright © 2011-2022 走看看