博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据基础:Java多线程入门
阅读量:4074 次
发布时间:2019-05-25

本文共 2235 字,大约阅读时间需要 7 分钟。

在大数据开发学习当中,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基础学习阶段,多线程的概念是需要去理解透彻的,同时,多线程知识点在面试当中也是出现频率非常高的问题,值得重视。

转载地址:http://ahkni.baihongyu.com/

你可能感兴趣的文章
String类的intern方法随笔
查看>>
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
1.随机函数,计算机运行的基石
查看>>
MouseEvent的e.stageX是Number型,可见as3作者的考虑
查看>>
在mc中直接加aswing组件,该组件还需最后用validate()方法
查看>>
移植Vim配色方案到Eclipse
查看>>
从超链接调用ActionScript
查看>>
谈谈加密和混淆吧[转]
查看>>
TCP的几个状态对于我们分析所起的作用SYN, FIN, ACK, PSH,
查看>>
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
《多线程服务器的适用场合》例释与答疑
查看>>
Netty框架
查看>>
Socket经验记录
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
FMS 客户端带宽计算、带宽限制
查看>>
在线视频聊天(客服)系统开发那点事儿
查看>>
语法解析器!
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>