【Java并发编程的艺术学习】第四章摘要补全

发布时间:2024年01月17日

压栈:拷贝一个方法压入栈

1.线程的状态

新建,就绪,运行,等待,阻塞,死亡

2.一个类里可以定义多个类,但是只能有一个是public类的

3.进入等待队列的进程要是没人唤醒,那么会一直等待,不会执行

4.wait和sleep的区别

都是立刻让出CPU?

wait:释放cpu,释放锁

sleep:不释放锁,其他线程没有资格执行

5.如何查看线程信息

jstack命令

6.线程间的通信:

内存中共享变量

7.notify()以及wait()

notify():唤醒

wait():等待,使用wait方法需要先获得该对象的锁

两者配合使用

8.如何通过jion控制线程执行顺序

9.ThreadLocal

实现方式:底层使用虚引用

实现原理:每个线程使用都会拷贝一份

10.线程池作用

对线程有一个很好的管理

11.线程池这个类中包含几个方法

public interface ThreadPool<Job extends Runnable>{
    //执行一个job,这个job需要实现runnable
    void execute(Job job);
    //关闭线程池
    void shutdown();
    //增加工作者线程
    void addWorkers(int num);
    //减少工作者线程
    void removeWorker(int num);
    //得到正在等待执行的任务数量
    int getJobSize();
}

12.线程池一般都有什么配置

核心线程数:队列没有满时。最初提交一个任务,该线程就处于一直运行状态(即使此时已经没有任务了),提交第二个任务时,如果此时已开启的线程数小于核心线程数,无论此时其他线程是否空置,都会创建新的线程

最大线程数

队列

超时时间

时间单位

拒绝策略:队列满了,最大线程数仍然处理不过来就需要开启该策略

文章来源:https://blog.csdn.net/weixin_62647396/article/details/135648949
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。