Java第12章学习总结(Java多线程机制)

教材学习总结

进程与线程

1  操作系统与进程

进程是程序的一次动态执行过程。现代操作系统可以同时管理计算机系统的多个线程

2  进程与线程

线程不是进程,线程是比进程更小的执行单位,线程的中断与恢复可以更加节省系统的开销。

Java中的线程

Java的多线程机制

Java语言的一大特性点就是内置对多线程的支持,多线程指一个应用程序中同时存在几个执行体,按几条不同的执行线索共同工作的情况。主线程(main线程):每个Java应用程序都有一个缺省的主线程。当JVM(Java Virtual Machine 虚拟机)加载代码,发现main方法之后,就会启动一个线程,这个线程称为“主线程”(main线程),该线程负责执行main方法。JVM一直要等到Java应用程序中的所有线程都结束之后,才结束Java应用程序 。

线程的状态与生命周期:建的线程在它的一个完整的生命周期中通常要经历如下的四种状态:

新建: 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。

运行 :线程必须调用start()方法(从父类继承的方法)通知JVM,这样JVM就会知道又有一个新一个线程排队等候切换了。一旦轮到它来享用CPU资源时,此线程的就可以脱离创建它的主线程独立开始自己的生命周期了。   

中断:有4种原因的中断:

*JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。

*线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状。

*线程使用CPU资源期间,执行了wait()方法。

*线程使用CPU资源期间,执行某个操作进入阻塞状态。

死亡 :处于死亡状态的线程不具有继续运行的能力。线程释放了实体。 

线程调度与优先级

每个java线程的优先级都在常数1-10之间。如果没有明确地设置线程的优先级,每个线程的优先级都为常数5,即Thread.NORM_PRIORITY。优先级可以调用setPriority(int grade)方法调整,如果参数grade不在1-10范围内,那么会产生一个IllegalArgumentException异常。JVM的线程调度器的任务是使高优先级的线程能始终运行,也就是说,如果有ABCD四个线程,A和B的级别高于C和D,那么java调度器首先以轮流的方式执行A和B,到AB都执行完毕进入死亡状态,才会在CD之间轮流切换。

Thread类与线程创建

使用Thread的子类

用Thread类的子类创建线程对象,需要重写父类的run()方法;

使用Thread类

用该类创建线程对象通常使用的构造方法是Thread(Runnable target);

目标对象与线程

从对象和对象之间的关系角度上看,目标对象和线程的关系有一下两种:

目标对象和线程完全解耦(目标对象的不包含对cat和dog线程对象的引用)

目标对象组合线程(弱耦合)(将线程作为自己的成员)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值