1:将 synchronized 换成 lock[ReentrantLock] (说说两个锁的区别)
this.wait() 和 this.notifyAll() 结合的是synchronized ,判断用的是: if();
this.wait() 和 this.notifyAll() 在多线程中替换为了:
private Condition condition = lock.newCondition();condition.await();this.wait();
condition.signalAll();//this.notifyAll();
2:lock什么是对象所?什么什么是全局所?
2:java 实现多线程的四种方式:很重要
1):继承Thread类
2:):实现Runnable接口
3):实现Callable接口通过FutureTask包装器来创建Thread线程【FutureTask(Callable<V> callable)】
Calllable (java.util.Concurennt) 企业中替代Runnable接口
4):使用ExecutorService、Callable、Future实现有返回结果的多线程。
启动线程的唯一方法就是通过Thread类的start()实例方法
Thread的构造器:
Thread(Runnable target) 和 Thread(Runnable target, String name)
4:如何中断一个线程?
5:线程的5种状态6:
实现多线程的第三种方法:


实现多线程的第四种方法:
3:线程的生产者和消费者模式【多线程之间的通信和调度】
记好:必须用 多线程通信将if ---->【替换] while; 【原因是什么:看周阳老师 视频--》】自己写代码思考
多线程开发的口诀:

多线程通信的题目:

线程不安全的,和线程安全的:
HashMap [线程不安全的]--------->ConcurrentHashMap :
HashSet----> CopyOnWriteArraySet<E>
ArrayList -----> CopyOnWriteArrayList<E>
多线程的8锁:----》周阳
1:看看视频还有上边的锁和线程资料:
2:volatile:多线程使用,主要是:一个变量定义以后,一段时间内未发生变化,java就会把它放缓存里边,以后的线程读取,就会读的是个定值,即使在改变也是读取的缓存的值,但是加上以后,就不会出现这个情况
高CPU占用:
3:线程池:(第四种获得线程的方法) 【88888888888888888888888888888888888888888888888888888】
ThreadPoolExcutor:线程池的
1):底层原理和七大参数
线程的工具类是:Excutors,数组工具类:Arrays
Excutors:
1:ExecutorService threadPool = Executors.newFixedThreadPool(3); :一线城池中固定数线程
2:ExecutorService threadPool = Executors.newSingleThreadExecutor();
一线城池中一个 线程
3: ExecutorService threadPool = Executors.newCachedThreadPool();
一个 线城池中可扩容个 线程
4:
threadPool.execute();线程池执行
threadPool.shutdown(); 关闭线程池
5:线程池的构造类的方法的5个参数
6:线程池的7个重要参数:
7:说说线程池的底层工作原理【ThreadPoolExcutor】
8:生产上哪三种线程池都不用,只用自定义的线程池
为什么,看下面的图
9:线程池饱和拒绝策略【8、线程池用过吗?ThreadPoolExecutor谈谈你的理解?】
jdk内置的拒绝策略

6:七大参数:


理解七大参数:
1:核心数 2:线程池中的最大线程数 3:存活时间4:实践单位
5:有等于:BlockingQueue:候客区 6:线程工厂 7:拒绝策略
7:线程池的底层原理:


线程池饱和拒绝策略:

8:为什么 不用

假如生产环境出现CPU占用过高,请谈谈你的分析思路?
OOM和GC日志深度
JVM性能调优
网友评论