博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java多线程基础(二)
阅读量:7239 次
发布时间:2019-06-29

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

基本概念

进程:程序的执行过程。持有资源(共享内存、共享文件)和线程。

线程:

- 是一个程序内部的顺序控制流。

- 它包含在进程之中,是系统中最小执行单元,同一个进程可以有多个线程。

- 线程共享进程的资源。

线程和进程对比:

- 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。

- 线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。

多进程:在操作系统中,能同时运行多个任务(程序)。

多线程:在同一应用程序中,有多个顺序流同时执行。

线程的交互:

一张图搞定Java线程,通过Thread类创建线程

通过Thread类创建线程

Thread类

直接继承了Object类,并实现了Runnable接口。位于java.lang包中。

封装了线程对象需要的属性和方法

继承Thread类——创建多线程的方法之一

- 继承Thread类(从Thread类派生一个子类,并创建子类的对象)

- 子类应该重写Thread类的run方法,写入需要在新线程中执行的语句段

- 调用start方法来启动新线程,自动进入run方法

一张图搞定Java线程,通过Thread类创建线程

一张图搞定Java线程,通过Thread类创建线程

执行结果:

主线程开启

主线程结束

新线程开启

10:3628800

新线程结束

结果说明:

(1)main线程已经执行完后,新线程才开始执行完

(2)main方法调用thread.start()方法启动新线程后并不等待其run方法返回就继续运行,线程的run方法在一边独自运行,不影响原来的main方法的运行

 


线程的休眠

线程休眠的原因就是要让其他线程得到执行的机会。

如果启动新线程后希望主线程多持续一会再结束,可在start语句后加上让当前线程(这里当然是main)休眠1毫秒的语句。

一张图搞定Java线程,通过Thread类创建线程

执行结果:

主线程开启

新线程开启

10:3628800

新线程结束

主线程结束

案例2:开启三个线程,每个线程休眠0~6毫秒

 

一张图搞定Java线程,通过Thread类创建线程

一张图搞定Java线程,通过Thread类创建线程

执行结果:

开启线程

主线程结束

thread1准备休眠:2081

thread3准备休眠:5298

thread2准备休眠:2812

thread1休眠结束

thread2休眠结束

thread3休眠结束

说明:由于线程3休眠时间最长,所以最后结束,线程1休眠时间最短,所以最先结束。


学习检测

1、下列说法中错误的一项是

一个线程是一个Thread类的实例

线程从传递给纯种的Runnable实例run()方法开始执行

线程操作的数据来自Runnable实例

新建的线程调用start()方法就能立即进入运行状态 新建的线程调用start()方法就能立即进入运行状态 - 正确

2、下列关于Thread类提供的线程控制方法的说法中,错误的一项是

在线程A中执行线程B的join()方法,则线程A等待直到B执行完成

线程A通过调用interrupt()方法来中断其阻塞状态

若线程A调用方法isAlive()返回值为true,则说明A正在执行中

currentThread()方法返回当前线程的引用 currentThread()方法返回当前线程的引用 - 正确

3、下列关于线程的说法以中,正确的一项是

由同一类创建的多个线程都同时运行结束

创建线程只能通过继承java.lang.Thread类

调用suspend()方法暂停的一个线程将不会再被重新执行

程序的执行完毕与超级线程(daemon threads)无关 程序的执行完毕与超级线程(daemon threads)无关 - 正确


Thread类常用API

一张图搞定Java线程,通过Thread类创建线程

一张图搞定Java线程,通过Thread类创建线程

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

你可能感兴趣的文章
Decorator:从原理到实践,我一点都不虚~
查看>>
前端引用字体@font-face的若干优化方法
查看>>
Linux笔记---修改文件所有者、所属组
查看>>
为什么开发kedis-server
查看>>
墙裂科普:移动端适配的基础概念
查看>>
模块化TableView
查看>>
Java笔试题算法和数据库部分
查看>>
移动端解决一像素边框问题。拿走不谢,border.css
查看>>
开源大数据周刊-第33期
查看>>
Android View篇之启动页倒计时动画的实现
查看>>
Linux文件锁
查看>>
centos磁盘挂载
查看>>
web前端CSS选择符:表示要定义样式的对象
查看>>
MySQL 每秒 570000 的写入,如何实现?
查看>>
LeetCode6: ZigZag Conversion(Z字形变换)
查看>>
我眼中的原型链,简单粗暴
查看>>
腾讯IMWeb团队2019暑期实习生招骋
查看>>
《私密管家》隐私策略
查看>>
java反射
查看>>
那些年收藏的技术文章(一) CSDN篇
查看>>