多线程

作者: 阳光课代表 | 来源:发表于2019-08-28 16:21 被阅读0次

创建线程的多种方式

继承Thread类

class A extends Thread {
    @Override
    public void run() {
        System.out.println("A");
    }
}
public static void main(String[] args) {
    new A().start();
}

实现Runnable接口

class B implements Runnable {
    @Override
    public void run() {
        System.out.println("B");
    }
}
public static void main(String[] args) {
    Thread t = new Thread(new B());
    t.start();
}

匿名内部类

/* 方式一 */
new Thread() {
    public void run() {
        System.out.println("A");
    }
}.start();

/* 方式二 */
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("B");
    }
}).start();

/* 两者都写输出D,因为重写了父类中的run方法 */
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("C");
    }
}) {
    public void run() {
        System.out.println("D");
    }
}.start();

Callable(返回结果、抛出异常)

class D implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        Thread.sleep(2000);
        System.out.println("D");
        return 1;
    }
}

public static void main(String[] args) {
    FutureTask<Integer> task = new FutureTask<>(new D());
    new Thread(task).start();
    try {
        /* 如果任务没完成则会阻塞直到任务完成 */
        int res = task.get();
        System.out.println("结果为:" + res); //结果为:1
    } catch (Exception e) {
        System.err.println("出现异常");
    } 
}

定时器

Timer timer =  new Timer();
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        System.out.println("here");
    }
}, 1000, 5000); //每隔5秒执行一次,1秒后执行

线程池

ExecutorService es = Executors.newFixedThreadPool(2);
for (int i = 0; i <20; i++) {
    es.execute(new Runnable() {
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
    });
}
es.shutdown();
输出:
pool-1-thread-1
pool-1-thread-2
pool-1-thread-2
pool-1-thread-1
...

Lambda表达式实现

????????????

相关文章

  • iOS多线程 NSOperation

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程 pthread、NSThread

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程: GCD

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程运用

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程基础

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • iOS进阶之多线程管理(GCD、RunLoop、pthread、

    深入理解RunLoopiOS多线程--彻底学会多线程之『GCD』iOS多线程--彻底学会多线程之『pthread、...

  • iOS多线程相关面试题

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • 多线程之--NSOperation

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS多线程之--NSThread

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

网友评论

      本文标题:多线程

      本文链接:https://www.haomeiwen.com/subject/uulmectx.html