前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据基础:Java多线程入门

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

作者头像
成都加米谷大数据
修改2020-12-17 18:10:08
3500
修改2020-12-17 18:10:08
举报
文章被收录于专栏:大数据开发大数据开发

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

大数据培训:Java多线程入门
大数据培训:Java多线程入门

一、线程与多线程

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

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

二、为什么要使用多线程

更快的响应时间

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

更多的处理器核心

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

更好的编程模型

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

大数据培训: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;

大数据培训:Java多线程入门
大数据培训:Java多线程入门

线程在建立后并不马上执行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基础学习阶段,多线程的概念是需要去理解透彻的,同时,多线程知识点在面试当中也是出现频率非常高的问题,值得重视。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、线程与多线程
  • 二、为什么要使用多线程
  • 三、多线程如何实现
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档