重点知识:
1.多线程实现的两种方式(继承、接口)
2.线程的属性和控制
3.多线程的同步/通信问题
一、多线程简介
1.基本概念:
①进程:计算机在执行的程序的实体
②线程:一个程序内部的顺序控制流
注:一个进程可以包含一个或多个线程,一个线程就是一个程序内部的一条执行线索
2.进程和线程的区别
①每个进程都有独立的代码和数据空间,进程的切换会有很大的开销
②同一类线程共享代码和数据空间,每个线程有独立运行的栈和程序计数器,线程切换的开销小
3.多进程和多线程
①多进程:在操作系统中能同时运行多个任务
②多线程:在同一应用程序中有多个顺序流同时进行
二、创建线程
1.创建线程类
①继承Threa类
②实现Runnable接口
2.通过Thread类构造器来创建线程对象
①Thread()
②Thread(Runnable target)
3.通过start()方法激活线程对象
三、继承Thread类实现线程类的顺序
四、线程的优先级
1.Java提供了一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照线程的有此案及来决定应调度哪个线程来执行;Java线程的优先级用1~10的整数来表示,越小则优先级越低;但Java的优先级的高度依赖于操作系统实现的
2.Thread类的三个常量,表示常用的线程优先级:
Thread.MIN_PRIORITY //1
Thread.NORM_PRIORITY //5
Thread.MAX_PRIORITY //10
3.线程优先级方法
①getPriority()---------确定线程的优先级
②setPriority()---------设置线程的优先级
五、线程状态及其生命周期
一个Tjread对象在它的整个生存期中能以几种不同的状态存在
start()---方法使线程处于可以运行状态,但不一定意味着该线程立即开始运行
六、线程类中的主要方法
七、线程的休眠
1.sleep()--让线程中止一段时间的静态方法
--Threa.sleep(long millis):暂时停止执行millis毫秒
--在睡眠期满的瞬间,再次调用该线程不一定会恢复它的执行
2.join() --导致当前线程的等待,直到调用这个join方法的线程终止
--join() join(long millis) join(long millis,int nanos)
3.yield() --为其他可运行的线程提供执行机会
--静态方法:Tread.yield( )