============================================
本次笔记结合郝斌老师和马士兵老师的线程部分作总结笔记
============================================
1).程序
所谓程序,是一个严格有序的指令集合。程序规定了完成某一个任务时,计算机所需做的各种操作,以及这些操作的执行顺序。
单道程序设计环境是指:计算机中除了操作系统之外,只存在一个用户程序,及用户程序独享整个计算机资源
单道程序的特点:
1.资源的独占性:任何时候,位于内存中的程序可以使用系统中的一切资源,不可能有其他程序与之竞争。
2.执行的顺序性:内存中每次只有一个程序,各个程序是按次序执行的,即执行完一个,在执行下一个
3.结果的再现性:只要执行环境和初始条件相同,重复执行一个程序,获得的结果总是一样的。
多道程序设计是指:计算机中除了操作系统之外,存在多个用户程序,这些程序同时运行
多道程序设计有如下特点:
1.间断性:由于资源共享和合作,并发程序间相互制约,造成合作执行间断。
2.失去封闭性:程序执行收外界影响。
3.不可再现性:重复执行时,可能得到不同的结果。
程序本身只是一组指令的有续集合,它本身没有任何运行的含义,它只是一个静态的实体。
2)进程
进程的由来:一方面为了保持程序“是一个在时间上严格有序的指令集合,是静态的保存在存储介质上”这个概念的原有含义,另一方面为了刻画多个程序共同运行时呈现出的这些特征,在操作系统上,以“程序”为基础,又引入了“进程”这一个新的概念!
也即“为了使程序能并发执行,且为了对并发执行的程序加以描述,所以人们引入了进程”。
进程是程序在某个数据集上的执行。是一个动态的实体。
3)线程
线程是一个程序内部的顺序控制流。
线程和进程的区别:
1.每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有教程的开销。
2.线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。
3.多进程:在操作系统中能同时运行多个任务(程序)。
4.多线程:在同一个应用程序中有多个顺序流通时执行。
多线程的优势:
编程简单,效率高(能直接共享数据和资源,多进程不能),适用于开发服务程序(如web服务,聊天服务等)。
4)创建线程
方法一:
创建一个集成Thread的类(假定类名为T),并重写Thread中的run()方法
构造一个A类对象,假定对象名为t
调用t对象的start()方法[start方法是从Thread类继承过来的]
注意的问题:
Thread中的start()方法的功能就是创建一个新的线程,并自动调用该线程的run()方法,直接调用run()方法是不会创建一个新的线程的。
执行一个线程实际上就是执行该线程的run方法的代码。
执行完 t.start();之后并不表示t所对应的的线程就一定会立即得到执行,t.start();执行完后只是表示t线程具有了可以立即被cpu执行的资格,但由于想抢占cpu执行的线程很多,cpu并不一定会立即去执行t所对应的的线程
一个Thread对象能且只能代表一个线程,一个Thread对象不能调用两次start() 方法,否则会抛抛出java.lang.lllegalThreadStateException异常。
方法二:
定义一个实现了Runnable接口的类,假定为R
创建T类对象a,代码如下
R r = new R();
利用 r 构造一个Thread对象tt
Thread tt = new Thread(r);
调用tt中的start()方法
tt.start();
Thread的常用方法
5).线程状的控制
状态切换图
线程控制的基本方法图
线程优先级
sleep方法的介绍
相关推荐
马士兵JAVA笔记(全).docx
马士兵_hibernate_课堂笔记是一本随堂笔记,里面讲述了很多经验知识,对初学者很有用处。
JAVA笔记(根据马士兵的java视频整理).pdf
马士兵 struts2 操作手册
java虚拟机调优(马士兵)-课程例子程序T01-T05,java例子程序,简单的代码,省得你自己敲代码了,让你更流畅的看视频教程。
马士兵多线程训练营笔记
本例子通過學習“002_尚学堂马士兵_Java视频教程_Hibernate3.3.2_HelloWorld.avi”教程實踐的小例子。 整理出来的精简JAR包,共八个。分别: antlr-2.7.6.jar、commons-collections-3.1.jar、dom4j-1.6.1.jar、...
马士兵多线程训练营上课笔记
java-SE-马士兵笔记word
对多线程高并发编程学习的一个总结,整理了多线程在实际应用中的例子。主要参考了马士兵老师在java高并发编程公开课视频中的例子,并在此基础上进行学习和总结!
马士兵_JAVA_网上商城项目的项目源码 很好的SSH架构学习代码
以前学java时候看的马士兵老师的教程,老师讲的较快,有些不适应,自己做些笔记巩固练习,效果还不错,贴出来分析大家把,配图+示例。。。
jvm java虚拟机 调优 马士兵 笔记 让你对java虚拟机调优有初步的认识
本例子通過學習“002_尚学堂马士兵_Java视频教程_Hibernate3.3.2_HelloWorld.avi”教程實踐的小例子。
坦克大战java版开发笔记 ----------------------------------------------------------- 版本0.1 ---------------------------------------------------------------- 功能: 1.绘出游戏面板,可以响应关闭事件 ...
02-4(马士兵)-多线程并发
)马士兵java框架hibernate学习笔记
java 马士兵 网上商城 源代码 可以运行的购物系统
马士兵老师spring框架学习笔记