LOGO

Thread

多线程

Company Logowww.themegallery.com

前言本章内容是 Core Java的一个难点,如何设计一个安全、并发的多线程程序,对于一个程序员来说是一个比较有挑战性的任务,因为你要站在机器的角度去考虑问题。

到目前为止,大家写的 Application都是单线程程序,

也就是启动的 java程序在“同一时间”内只会做一件事。有时需要程序“同时”可以做很多事,即所谓多线程( Multi-thread)程序。在以后的

jsp/servlet学习中,了解多线程也是很重要的。

例,SingleThread.java

Company Logowww.themegallery.com

线程基本概念进程:应用程序,一个可执行的程序统称线程:一个轻量级的进程。一个进程可以有多个线程如何理解呢?

进程的公共部分(如成员变量)

进程中独立运行的线程

Company Logowww.themegallery.com

CPU

何时做

Code

做什么

Data

对什么做操作线程三要素

Java设计多线程程序的四种模式:

1、不共享代码,也不共享数据

2、共享代码,不共享数据

3、不共享代码,共享数据

4、既共享代码,也共享数据

IE

内存缓冲区迅雷下载资源

Company Logowww.themegallery.com

多线程的实现方式:

1、继承 java.lang.Thread类,并覆盖 run()

class A extends Thread{

public void run() { }

}

new A().start();

2、实现 java.lang.Runnable接口

class B implements Runnable{

public void run(){ }

}

new Thread( new B() ).start();

Company Logowww.themegallery.com

线程控制的基本方法

boolean isAlive() 判断线程是否还“活”着,即线程是否还未终止

Int getPriority()获得线程的优先级数值

void setPriority()设置线程的优先级数值

static void sleep( long millis)将当前线程睡眠指定毫秒数

void join() 调用某线程的该方法,将当前线程与该线程“合并”,即等待该线 程结束,在恢复当前线程的运行

static void yield()主动让出 cpu,当前线程进入就绪队列等待调度

void wait() 当前线程进入对象的 wait pool

void notify() /notifyAll( ) 唤醒对象的 wait pool中的一个 /所有等待线程

static Thread currentTread() 返回当前正在执行线程的引用

void setName()给线程一个名字

String getName()得到线程的名字

long getId() OS分配的一个标识

Company Logowww.themegallery.com

线程的生命周期

new

Running

Runable

Block pool

Dead

start()

OS

sleep()

wait()

notify()

yield()

时间到运行结束wait pool

Company Logowww.themegallery.com

1、不共享代码,也不共享数据两个概念:

当前线程对象,this

当前正在执行的线程对象 Thread.currentThread()

例,ThreadTestA

2、不共享代码,共享数据例,ThreadTestB

Java设计多线程程序的四种模式

Company Logowww.themegallery.com

Java设计多线程程序的四种模式

3、共享代码,也共享数据 --使用 synchronized同步多线程并发访问数据的安全性问题:加锁的机制关键字,Synchronized( 对象实例 )

对象的锁标记例,ThreadTestC

网上银行转账:

If(A>10000){

A=A-10000;

B=B+10000;

}

线程转换了!后果?

Company Logowww.themegallery.com

4、不共享代码,共享数据最经典的多线程例子:生产者 — 消费者仓库生产者消费者例,ThreadTestD.java

注:在 JAVA语言中,程序运行完成的条件:所有线程都运行结束,不一定是主线程运行结束例,建国六十周年 倒计时牌,TimeFrame.java

java 多线程课件_Thread_java多线程参考源码_ppt_大学课件预览_高等教育资讯网相关推荐

  1. java利己线程_第10章 多线程2_Java程序设计与应用开发_ppt_大学课件预览_高等教育资讯网...

    第十章 多线程 杨 娟 it@126.com Java 程序设计 教学内容 ? 线程的概念 ? 多线程的实现 ? 线程的生命周期 ? 线程的中断 ? 线程的优先级 ? 同步线程 ? 小结 10.1 线 ...

  2. java 继承 ppt_理论五继承_JAVA学习课件_ppt_大学课件预览_高等教育资讯网

    Java 继承 例子:请确认各类之间的关系 plane military plane( 军事) passenger plane ( 客机) cargo plane ( 货物) fighter plan ...

  3. 西安电子科技大学java答案_第3章 数 组_西安电子科技大学:JAVA语言_ppt_大学课件预览_高等教育资讯网...

    第 3章 数组 第 3章 数 组 3.1 一维数组 3.2 二维数组 第 3章 数组 3.1 一 维 数 组 一维数组是最简单的数组, 在 Java中, 数组是作为 数组类的一个实例来处理的, 故可以 ...

  4. 计算机控制系统刘恩沧课后题答案,第八章2 提高计算机控制系统可靠性的技术措施_内蒙古农业大学:计算机控制技术_ppt_大学课件预览_高等教育资讯网...

    第八章 提高计算机控制系统可靠性的技术措施 第八章 提高计算机控制系统可靠 性的技术措施 8.1 软件故障诊断措施 8.2 软件可靠性措施 8.3 内部干扰 8.4 采用隔离变压器 8.5 接地设计 ...

  5. 大学计算机基础模拟系统2014ppt第三,第一章_河海大学:大学计算机信息技术_ppt_大学课件预览_高等教育资讯网...

    大学计算机信息技术 蔡正林 2004.9.21 本课程教学说明 ? 本课程教学目的 ? 广度优先原则,面广量大 ? 学会听课,记笔记,记问题 (上课时间地点 ) ? 学会实践上机,记问题 (关于上机指 ...

  6. 湖北经济学院的计算机是否强,graphics-ch11-真实感图形绘制_湖北经济学院:计算机图形学_ppt_大学课件预览_高等教育资讯网...

    第十一章 真实感图形技术 1,简单光照明模型 2,多边形绘制方法 3,透明 4,整体观照明模型 5,光线跟踪算法 第十章 真实感图形绘制 光照模型 (Illumination Model):计算某 一 ...

  7. 鞍山c语言培训,10_鞍山科技大学:C语言与数据结构_ppt_大学课件预览_高等教育资讯网...

    返回本章首页 下一页 上一页 第 10章 位运算 为了节省内存空间,在系统软件中常将多个标志状 态简单地组合在一起,存储到一个字节(或字)中.C 语言是为研制系统软件而设计的,所以她提供了实现将 标志 ...

  8. convs在MATLAB中,matlab2_MATELAB课程设计_ppt_大学课件预览_高等教育资讯网

    第二讲 MATLAB的数值计算 -- matlab 具有出色的数值计算能力,占据世界上数值计算软件的主导地位数值运算的功能创建矩阵矩阵运算多项式运算线性方程组数值统计线性插值函数优化微分方程的数值解一 ...

  9. 大学物理实验试卷1到8_15_试卷(光学,大学物理实验)_doc_大学课件预览_高等教育资讯网...

    大 学 物 理 实 验 试 题注意:所有答案都必须写在答题卡上,否则答题无效. 一.填空题:(在下面10题中任选8题,不选的题号上打×) 1.惠斯顿电桥桥路中保护电阻开关用以保护,只有细调时此开关才 ...

  10. 图十字链表并求度c语言,第5章_西安电子科技大学出版社:算法与数据结构-C语言描述(樊希平)_doc_大学课件预览_高等教育资讯网...

    第5章 数组和广义表要点: 1.掌握数组元素存储位置的换算: 2.了解特殊矩阵地存储方法和元素存储位置计算: 3.了解广义表的长度.深度.head.tail等概念和操作和存储结构. 教材习题解答: 5 ...

最新文章

  1. 视频+课件| PointDSC:基于特征匹配的点云配准方法(CVPR2021)
  2. mpvue初体验-用vue开发小程序
  3. [html] 你有使用过output标签吗?说说它的用途有哪些?
  4. LeetCode刷题实战(43):Multiply Strings
  5. 信息学奥赛一本通(2027:【例4.13】三角形)
  6. JavaScript学习笔记(五)--深拷贝浅拷贝
  7. 网易云深度学习第二课NoteBook2
  8. 陆奇:欢迎毛圣博加入奇绩,成为奇绩创坛合伙人
  9. 强大的负载均衡+静态文件WEB服务器nginx实战
  10. 若在一分页存储管理系统中,某作业的页表如表所示。已知页面大小为 1024字节,试将逻辑地址 1011,2148,3000,4000,5012转化为相应的物理地址。
  11. JavaScript通用库(转)
  12. 光域网(IES)在Unity3d中的应用【2020】
  13. 迅雷下载提示:应版权方要求/包含违规内容, 文件无法下载
  14. iOS 判断机型是否为iPhone Xs
  15. 行业分析是什么?该怎么做?
  16. Android原生webView概述
  17. 论文笔记:m6Acorr: an online tool for the correction and comparison of m6A methylation profiles
  18. Java项目:SSM汽车租车管理系统
  19. 什么是ROC曲线?为什么要使用ROC?以及 AUC的计算
  20. c/c++开发方向如何选择?坚持进阶学习c++还有意义吗?

热门文章

  1. keil5.34设置GB2312编码后,字体不能改
  2. 诊断某段时间数据库性能抖动问题思路
  3. 全志F1C100s入坑与填坑 uboot Linux Kernel 与buildroot
  4. c语言12 345 6789,c语言知识点
  5. 常见分类算法优缺点比较
  6. 解决虚拟机桥接模式无法上网的问题
  7. 思科交换机链路聚合详解收集
  8. OpenCV: 读取图片中某个点的像素值
  9. navicat 绿化版
  10. 写论文的时候发现的几个神奇的网站