多线程
文章平均质量分 66
零
我是小白
展开
-
并发编程合集(1)上下文切换详解、死锁及解决方案详解
上下文切换多线程一定快吗测试上下文切换次数和时长如何减少上下文切换减少上下文切换实战死锁资源限制的挑战原创 2022-12-16 15:53:02 · 244 阅读 · 0 评论 -
java中并发常用工具类及示例代码
前言:在你无聊的时候,想想比你优秀还努力的人,也许就不觉的无聊了今日记录:四个并发中可能会用到的工具类,分别是:CountDownLatchCyclicBarrierSemaphoreExchangerCountDownLatch是一组线程等待其他的线程完成工作以后在执行,加强版join区别在于:调用thread.join() 方法必须等thread 执行完毕,当前线程才能继续往下执行而CountDownLatch通过计数器提供了更灵活的控制,只要检测到计数器为0当前线程就可以往下执原创 2022-04-18 21:29:05 · 2788 阅读 · 0 评论 -
java中的ThreadLocal详解及示例代码
ThreadLocal根据名字我们可以知道这是一个线程本地变量,每一个线程都回copy一个副本,可以为创造对象减少不必要的开销(单例),但是不能保证线程安全(每个线程的结果可能是不一样的)ThreadLocal对比锁机制:锁机制是以时间换空间,让多个线程依次访问一个资源ThreadLocal是以空间换时间,每个线程拥有资源的一个副本,不会相互影响ThreadLocal类常用方法:get:获得线程局部变量中的值set:设置值remove:删除值initialValue:给值进行初始原创 2022-04-18 19:57:12 · 366 阅读 · 0 评论 -
线程的等待和通知及示例代码(wait、notify、notifyAll)
线程的等待和通知Object类的方法:void wait():让持有锁的线程进入等待状态,直到被通知void wait(long time):让线程等待,直到被通知或时间结束void notify():随机选择一个等待的线程,进行通知void notifyAll():通知所有等待的线程注意:上面的方法只能是锁对象调用,否则出现异常IllegalMonitorStateExceptionyieId sleep 不释放锁,wait notify 在执行的时候释放锁,无论是notify还是no原创 2022-04-18 19:55:07 · 414 阅读 · 0 评论 -
多线程的常用关键字及示例代码(synchronized、volatile)
1.synchronizedsynchornized可以修饰方法跟代码块,核心本质是锁对象,如果是static修饰的,也可以锁类变量注意:理解Java对象在内存中的组成:对象头,实际数据,对齐填充,重点理解对象头中的 markword线程拥有锁,锁的是对象,对象的头信息中,指向的指针是线程偏向锁,自旋锁,轻量锁,重量锁1.偏向锁:当程序没有竞争,取消同步操作,发生竞争时,升级为轻量锁2.轻量锁:(对象的头信息markword中存放了锁的状态和线程持有的索)如果当前线程用cas将markword原创 2022-04-18 19:52:08 · 647 阅读 · 0 评论