美文网首页
大数据基础: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进阶之synchronized关键字详解

    掌握多线程是从Java入门后需要跳过的第一大坎,使用多线程就难以避免要处理数据同步问题,在Java多线程中实现数据...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • JAVA从菜鸟到架构师

    入门篇 入门主要学习Java基础语法,如:类和对象,继承和接口,数组和字符串,异常,反射,输入输出和数据库,多线程...

  • java学习路线

    javaSE java基础语法 java文件操作 java网络操作 java多线程 java数据库操作 java ...

  • java线程入门基础(二)

    java线程入门基础(二) 一、认识Java里的线程 1.1 Java里的程序天生就是多线程的 一个Java程序从...

  • 面试-Java相关

    Java Java基础思想 Jvm相关 垃圾回收机制 多线程与进程 基础数据结构 基本设计模式 ClassLoader

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

    在大数据开发学习当中,Java基础是非常重要的一部分,打好了Java基础,才能在后续的大数据框架技术学习阶段,也能...

  • Java学习之_必备知识

    一、语言的入门及进阶 Java基础语法 OO编程思想 集合 IO 异常 泛型 反射 多线程 函数式 二、Web基础...

  • 大数据开发:Java数据类型入门

    在Java基础入门学习阶段,Java基础数据类型无疑是基础当中的重点,掌握基础数据类型,对于后续去理解和掌握更深入...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

网友评论

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

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