Thread初学1

【注】:转载至大佬智哥文档,仅做学习,略有删添

Thread
主要内容:进程、线程、区别、线程的创建,线程的主要方法,实现线程同步(例)

【背景】:

单道批处理机,通过磁带将程序顺序的装入计算机,直到程序执行完毕,再载入下一个程序。Monitor 监督程序,监控
过程:cpu执行程序——I/O请求,cpu等待I/O结束,cpu继续执行程序
多道批处理机(IBM-OS/360),外存任务队列,算法选择,同时交替运行n个程序,使cpu总是处于忙碌状态。
过程:A cpu执行程序,I/O执行请求, cpu执行B程序,I/O请求(等待),cpu执行C程序、A释放I/O B执行I/O、C等待I/O cpu继续执行A程序 (两种资源cpu和I/O)
分析一下区别:资源独享,和资源共享,间断执行,异常率高,

【什么是进程】:

20世纪60年代,提出进程的概念,并在OS下实现多进程。

进程:

process ,OS下独立拥有资源,调度,运行的基本单位。

进程的两个基本属性:

(1)拥有资源(程序正文,内存地址,数据磁盘信息

(2)拥有唯一PCB process control block 管理资源地址,保存调度和断点信息等…

 【注】程序:一组有序的指令集合,进程才是执行的实体。

进程的5种基本状态:



【什么是线程】:

    20世纪80年代,提出线程的概念Thread、又叫做light-weight-process
    取代了进程,成为调度和分派的基本单位。
    线程本身并不拥有资源,除少量必须(tcb少量局部变量,状态参数和,地址信息)
    线程出现的根本原因是进程 heavy-weight-process的创建、切换、撤销所花费的时、空开销太大、
    创建:分配资源,内存空间,IO资源,唯一的PCB
    撤销:回收资源,撤销PCB
    切换:保留当前cpu进程环境,创建/回收新环境

【进程和线程的区别】:

     资源:进程拥有资源,线程本身不拥有
     独立性:进程之间防止干扰破坏,空间资源独立,线程之间共享合作,
     系统开销:进程开销大,线程小,同OS下30倍以上的创建效率,5倍以上的切换

【创建线程的两种方式】:

    (1)继承Thread类,重写run方法
Start()启动线程,执行run()中内容
//实现,线程start()同时载入,系统决定如何执行

    (2)实现Runnable接口,实现run方法
        Java只允许有一个“父亲”extends 但是可以有多个“师傅”implements

【线程的基本状态】


Sleep方法只是当前thread休眠,不会释放锁 ,wait会释放锁,notifyAll会唤醒全部wait线程,但并不是立即让出cpu
Interrupt取代了stop方法,会向线程发出中断信号
SetPriority可以设置线程优先级,1最低,5默认,10最高

【实现线程同步】:

实现简单的线程同步:在4个窗口下售出50张车票
提示:创建售票窗口类(Ticket),继承Thread类,重写run方法,在run方法内模拟售票操作,注意使用同步锁,票的数量是用静态成员变量!
public class Ticket implements Runnable{
	
	static Object obj = "";
	
	private static int TICKET_NUM=50;
	@Override
	public void run() {
		// TODO Auto-generated method stub

		while(TICKET_NUM>=0) {

			synchronized (obj) {
				if(TICKET_NUM > 0) {
					System.out.println(Thread.currentThread()+"窗口还剩"+TICKET_NUM+"张");
					TICKET_NUM--;
				}else {
					break;
				}
				try {
					Thread.sleep(500);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		
		
	}
	
	public static void main(String[] args) {
		
		for(int i=0;i<4;i++) {
			Ticket ticket = new Ticket();
			Thread t  = new Thread(ticket);
			t.start();
		}
	}
	
}



猜你喜欢

转载自blog.csdn.net/qq_34819372/article/details/80180344
今日推荐