1.Java多线程

作者: _麻辣香锅不要辣 | 来源:发表于2019-06-30 12:23 被阅读0次

四种方式创建java多线程

1.继承Thread类
2.实现Runnable接口
3.实现Callable接口
4.使用线程池

继承Thread类
public class Thread1 extends Thread {
    @Override
    public void run() {
                System.out.println("i am thread1");
            }
}
实现Runnable接口
public class Thread2 implements Runnable {
    @Override
    public void run() {
                System.out.println(“i am thread2”);
            }
}
实现Callable接口
public class Thread3 implements Callable<Integer> {
    @Override
    public Integer call() {
        System.out.println("i am thread3");
        return 111111;
    }
}
使用线程池
   ExecutorService executorService = Executors.newFixedThreadPool(10);
        Future<Integer> submit = executorService.submit(new Thread3());//使用callable接口
        try {
            submit.get();   //可以得到callable接口中的返回值
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        executorService.execute(new Thread2());//使用runnable接口
        executorService.shutdown();
区别

1.继承Thread类,其本质上也是实现了Runnable接口,而且由于Java不支持多继承,所以要是已经继承了其他父类时,就无法使用继承Thread类是方法使用多线程

class Thread implements Runnable

2.实现Runnable接口,将实现了Runnable接口的实现类放入Thread的构造函数中,赋值给target属性。

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

当调用 start() 方法时,会开启线程,并自动调用run()方法。

jdk5.0之后新增了Callable和线程池来创建多线程

Callable和Runnable区别:
不同点:

两者最大的不同点是:
1.实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果;
2/Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法的异常只能在内部消化,不能继续上抛;

注意点:

Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞主线程直到获取‘将来’结果;当不调用此方法时,主线程不会阻塞

相关文章

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

  • 1.Java多线程

    四种方式创建java多线程 1.继承Thread类2.实现Runnable接口3.实现Callable接口4.使用...

  • java多线程

    1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用E...

  • Java知识梳理七

    一、Java多线程二 1.Java内存模型 首先,程序计数器 (PC,Program CounterRegi...

  • 专业强化训练

    1.JAVA 1.1 语言特性 1.2 JVM 1.3 设计模式 1.4 多线程、高并发专题 1.5 Spring...

  • 挂面10

    1.Java多线程中的竞争条件概念 Java中的多线程,当多个线程对一个数据进行操作时,可能会产生“竞争条件”的现...

  • Java多线程知识点

    1.java中实现多线程的几种方式 java中实现多线程的方式主要有两种,第一种是继承Thread类,第二种是实现...

  • 疫情还没结束,靠着这几份文档,我拿到蚂蚁offer后,又拿下了阿

    1.Java多线程编程核心实战 2.深入理解Java虚拟机:JVM实战 3.深入浅出Nginx实战 4.Redis...

  • java多线程常见面试题

    1.java多线程有哪几种实现方式 三种方式: 1.继承Thread类实现多线成 2.实现Runnable接口 3...

  • jenkov - 1.Java并发与多线程教程

    什么是多线程 多线程的意思是在一个程序里有多个线程执行。一个线程就像一个独立的CPU在执行你的程序。所以,多线程程...

网友评论

    本文标题:1.Java多线程

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