【Java多线程学习笔记】《Java多线程编程核心技术》第一章知识点汇集

1、多线程是异步的,线程的调用是随机的

2、创建线程的两种方法:

  1. 继承Thread类,重写run()方法;
  2. 实现Runnable接口,重新run()方法;
  3. 如下图,Thread.java类也实现了Runnable接口

    

3、Thread.java类的start()方法通知“线程规划器”此线程已经准备就绪,等待调用线程对象的run()方法。

多次调用线程start()方法,会出现Exception in thread "main" java.lang.IllegalThreadStateException。

4、执行start()方法的顺序不代表线程启动的顺序。因为线程的调度是随机的

5、currentThread()方法可返回代码段正在被哪个线程调用的信息

6、isAlive()判断当前的线程是否处于活动状态。

活动状态就是线程已经启动且尚未终止。就是正在运行或准备开始运行状态。

7、sleep()是让当前“正在执行的线程”休眠(暂停执行)。“正在执行的线程”是指this.currentThread()返回的线程。

8、Java 3种终止正在运行的线程方法:

  1. 使用退出标志,是线程正常退出,也就是当run()方法完成后线程终止
  2. 使用stop()方法强行终止,不推荐。因为stop和suspend及resume都是过期作废的方法,使用可能造成不可预料的问题
  3. 使用interrupt方法中断线程

9、调用interrupt()方法仅仅是在当前线程种打一个标记,并不是真的停止线程

10、interrupted():测试当前线程是否已经中断。interrupted()具有清除状态的功能

11、yield()方法的作用是放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间。但放弃时间不确定,有可能刚刚放弃马上又获得CPU时间片

12、线程优先级1-10。线程优先级具有继承性,比如A线程启动B线程,则B线程的优先级和A一致

13、优先级高的线程不一定每次都先执行完。不确定性和随机性

14、在Java中有两种线程,用户线程、守护(Daemon)线程。

15、典型的守护线程就是垃圾回收线程,当进程中不存在非守护线程了,则垃圾回收线程也就没必要存在,会自动销毁。

发布了32 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/chengsw1993/article/details/94620851
今日推荐