JDK 8中支持的三种多线程方式

JDK 8中支持的三种多线程方式


      • JDK 8中支持的三种多线程方式
        • 概述
        • 多线程使用
          • 继承Thread类
          • 实现Runable接口
          • 实现Callable接口
        • 线程同步
        • 总结


概述


最新学习了JDK 8的一些特性,在线程方面的改进也比较大,都支持了函数式编程,本文着重回忆多线程的基本使用。

多线程使用


继承Thread类

继承Thread并重写run()方法,Thread类中的start方法会去调用系统的方法执行相应的线程。实际上Thread也是实现了Runable接口的,从该类的文档中我们能找到。

实现Runable接口

实现Runable接口,并重写run()方法,启动线程必须要使用Thread类的start()方法。

实现Callable接口

该类的使用极其麻烦,参见文章 https://my.oschina.net/rouchongzi/blog/129333

线程同步


  • 同步代码块
synchronized("锁"){  //在这里锁通常有两种,一种是字符串常量,另外一种是this
    //需要同步执行的代码块
}
  • 同步方法
public synchronized void xxx(){
    //同步方法
}

总结


  • 所有线程的启动都必须调用Thread类中的start()方法
new Thread("线程名字").start();
  • 实现Runable是首先应该考虑的方法,有下面的两点原因

    • 在Java中继承类具有局限性,每个类只能继承一个类,但是能实现多个接口
    • 实现Runable接口能更好的共用数据
  • 实现Callable能返回值(其它两个方法,在线程结束之后不能返回值)

你可能感兴趣的:(Java)