美文网首页
大数据基础:Java多线程入门

大数据基础:Java多线程入门

作者: 成都加米谷大数据 | 来源:发表于2020-12-17 17:30 被阅读0次

    在大数据开发学习当中,Java基础是非常重要的一部分,打好了Java基础,才能在后续的大数据框架技术学习阶段,也能有所主力。而Java当中的一个重要知识点,就是多线程。今天的大数据基础分享,我们就主要来讲讲Java多线程入门基础。

    一、线程与多线程

    关于线程,官方定义是操作系统能够进行运算调度的最小单位,线程包含在进程之中,是进程中的实际运作单位。而多线程,致力于解决多任务同时执行的需求,合理使用CPU资源。

    多线程的运行是根据CPU切换完成,如何切换由CPU决定。在实际运行当中,一个进程中可以并发多个线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。

    二、为什么要使用多线程

    更快的响应时间

    多个线程并行执行不同的任务,使得单位时间内能够完成的任务更多,也能更快地完成大批量的任务。

    更多的处理器核心

    线程是大多数操作系统调度的基本单元,一个程序作为一个进程来运行,程序运行过程中能够创建多个线程,而一个线程在一个时刻只能运行在一个处理器核心上。

    更好的编程模型

    java为多线程编程提供了考究并且一致的编程模型,使开发人员能够更加专注于问题解决,即为所遇到的问题建立适合的模型,而不是绞尽脑汁地考虑如何将其多线程化。一旦开发人员建立好了模型,稍作修改总是能够方便地映射到Java提供的多线程编程模型上。

    三、多线程如何实现

    1.创建线程

    在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。Thread构造函数:

    public Thread();

    public Thread(Runnable target);

    public Thread(String name);

    public Thread(Runnable target,String name);

    public Thread(ThreadGroup group,Runnable target);

    public Thread(ThreadGroup group,String name);

    public Thread(ThreadGroup group,Runnable target,String name);

    public Thread(ThreadGroup group,Runnable target,String name,long stackSize);

    2.线程的生命周期

    与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中和这四种状态相关的方法。

    //开始线程

    publicvoid start();

    publicvoid run();

    //挂起和唤醒线程

    publicvoid resume();//不建议使用

    publicvoid suspend();//不建议使用

    publicstaticvoid sleep(long millis);

    publicstaticvoid sleep(long millis,int nanos);

    //终止线程

    publicvoid stop();//不建议使用

    publicvoid interrupt();

    //得到线程状态

    publicboolean isAlive();

    publicboolean isInterrupted();

    publicstaticboolean interrupted();

    //join方法

    publicvoid join()throws InterruptedException;

    线程在建立后并不马上执行run方法中的代码,而是处于等待状态。线程处于等待状态时,可以通过Thread类的方法来设置线程不各种属性,如线程的优先级(setPriority)、线程名(setName)和线程的类型(setDaemon)等。

    当调用start方法后,线程开始执行run方法中的代码。线程进入运行状态。可以通过Thread类的isAlive方法来判断线程是否处于运行状态。当线程处于运行状态时,isAlive返回true,当isAlive返回false时,可能线程处于等待状态,也可能处于停止状态。

    一但线程开始执行run方法,就会一直到这个run方法执行完成这个线程才退出。但在线程执行的过程中,可以通过两个方法使线程暂时停止执行。这两个方法是suspend和sleep。在使用suspend挂起线程后,可以通过resume方法唤醒线程。而使用sleep使线程休眠后,只能在设定的时间后使线程处于就绪状态。

    有三种方法可以使终止线程。

    ①使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。

    ②使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。

    ③使用interrupt方法中断线程。

    关于大数据基础,Java多线程入门,以上就为大家做了简单的介绍了。在Java基础学习阶段,多线程的概念是需要去理解透彻的,同时,多线程知识点在面试当中也是出现频率非常高的问题,值得重视。

    相关文章

      网友评论

          本文标题:大数据基础:Java多线程入门

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