通过近期对多线程的学习,特将知识点、考点汇总如下:
一、进程与线程
进程:指正在执行的应用程序,系统进行资源分配和调用的独立单位,每个进程都有自己的内存空间和系统资源。
进程意义:提高CPU的使用率。
线程:同一个进程内又可执行多个任务,而每一个任务都可以看作是一个线程;线程进程执行的单元,执行的路径。
单线程:一个进程只有一条执行路径;
多线程:一个应用程序有多条执行路径;
线程意义:提高进程使用率(但不提高执行速度)。
二、线程的调度和优先级
调度:
a.分时调度
b.抢占式调度:(java采用的是该调度方式)
优先级:
a.默认值:5
b.范围:1-10
三、多线程的实现方式及意义
a.继承Thread类;
b.实现Runnable接口;
两者的区别:
1)继承Thread类可以直接使用getname()方法,实现Runnable必须通过Thread.currentThread().getName()获取名称;
2)创建对象有区别:
前者:Thread t1 = new MyThread(); t1.start();
后者:MyThread mt=new MyThread(); Thread t1 = new MyThread(mt); t1.start();
3)实现Runnable接口
a.解决了单继承的局限性问题;
b.适合多个相同的程序代码去处理同一个资源的情况,把线程同程序代码块,数据有效的分离,较好的体现了面向对象设计思想。(在实际开发中应用Runnable方法)
四、线程的常见控制方法
1)线程休眠 public static void sleep(longmillis)
sleep不释放锁;
2)加入线程 public final void join()
在某个线程执行完之后,才让别的线程运行;
3)礼让线程 public static void yield()
尽量实现线程你一次我一次轮流工作
4)后台线程 public final voidsetDaemon(boolean on)
后台线程死亡后,其它线程也跟着死亡;列如刘备是后台线程,关羽和张飞是另外的两个线程,刘备死亡 后,关羽和张飞线程自动死亡;
5)终止线程 public final void stop() public void interrupt() 需掌握
五、线程的生命周期
谢谢阅读,共同进步!