java多线程编程核心技术知识点总结

1. Thread和Runnable接口的区别

Thread为类,只能单继承,Runnable为接口,可以多继承。Runnable作为参数传递给thread可以实现资源共享。

2.变量安全

  方法内的变量为线程安全,实例变量为非线程安全。

3.判断线程是否中断

interrupt: 会清除状态
isInterrupt:不会清除状态

4.Syntronized锁重入

当一个线程获得对象锁时,再次重入还是可以获得该对象锁。

5.静态对象持有锁

如果是对static方法加锁相当于对类加锁
非static是对对象加锁

6. 同步Syntronized方法容易造成死锁,同步块则不会


7.JVM查死锁

JStack 可以检查死锁

8.volatile

volatile主要是使变量在多个线程间可见。主要用于多线程可以感知实例变量被修改

9. volatile与Syntronized的比较

volatile只能用于修饰变量,Syntronized还可以修饰方法和类
多线程访问volatile不会阻塞 访问syntronized会发生阻塞
volatile保证数据的原子性,并不保证可见性 Syntronized保证原子性和可见性

10.线程通信:等待通知机制

wait,notify(notifyAll)方式
在调用wait之前,必须获得该对象对象级别的锁。只能在同步方法,同步块中调用wait
调用wait()后,释放锁
wait()没有持有适当的锁 则会报错IllegalMonitorStateException
在执行notify之后线程不会马上释放锁,只有等到退出syntronized方法后才会释放锁
wait使得线程释放对象锁,进入等待,直到被唤醒
notify随机挑选进程唤醒
notifyAll唤醒所有线程,获得锁的线程运行


11. 锁对象队列

每个锁对象都有两个队列,就绪队列存放将要获得锁的线程,阻塞队列存储了被阻塞的线程。线程被唤醒进入就绪队列,wait()进入阻塞队列。


12.Interrupt遇到了wait

当interrupt方法遇到了wait方法会出现interruptException

13. wait(long) 等待一段时间 自动唤醒

14线程通信:生产者消费者模式

一个生产者 多个消费者 使用while notifyAll();


15.通过管道进行线程间通信:字节流

pipedInputStream pipedOutputStream pipedReader pipedWriter

16.方法join的使用

方法join的作用是使得所属对象的线程的run方法执行结束后再执行当前的线程

17.join和Interrupted同时遇到会抛出异常


18.join(long)等待 释放锁 sleep(long)等待不释放锁


19.ThreadLocal

每个线程都绑定自己的值

20.InheritableThreadLocal 子进程可以继承父进程的值


21.ReentrantLock实现同步 lock unlock

22.Condition实现等待与通知 await signal signalAll()

23. 公平锁与非公平锁

公平锁按照线程加锁的顺序来获得锁FIFO
非公平锁抢先占有获取锁

24.getHoldCount 查询当前线程保持此锁定的次数 也就是调用lock的次数

     getQueueLength获取等待锁的线程个数
    getWaitQueueLength(Condition)获取等待某个条件的线程的锁的个数

25. ReentrantReadWriteLock

读相关的锁 共享锁
写相关的锁 排它锁
lock.readlock().lock()

26.Timer定时器的使用

 timeTask schedule
schedule(timeTask,time,long)周期性的执行某任务
timeTask.cancel()取消任务
timer.cancel将任务队列的所有任务清除

27. 单例模式 饿汉模式

饿汉模式 实例已经被创建
懒汉模式需要时创建 多线程双层保护
enum枚举实现单例模式
反序列化使用readresolve方法




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值