多线程
文章平均质量分 54
国足臭脚
这个作者很懒,什么都没留下…
展开
-
字节面试题
给你两个线程交替打印1到100拜托下次别让我写好难啊package 笔试;public class Main implements Runnable{ private boolean runNow; private Object lock; private int num; public Main(boolean runNow , Object lock,int num){ this.runNow = runNow; this.原创 2021-08-31 21:42:47 · 89 阅读 · 0 评论 -
ThreadLocal
ThreadLocal是啥ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。多线程中使用,线程之间不相关,解决了变量并发访问的冲突问题。1 在进行对象跨层传递的时候,使用ThreadLocal可以避免多次传递,打破层次间的约束。2 线程间数据隔离3 进行事务操作,用于存储线程事务信息。4 数据库连接,Session会话管理。ThreadLocal的原理1 set()方法set()用来设置当前线程中变量的副本1 首先获取到了当前线程t2 后原创 2021-08-17 22:09:09 · 58 阅读 · 0 评论 -
多线程常见的API方法
进程和线程的区别1 进程是操作系统进行资源分配的最小单位,线程是操作系统进行任务调度的最小单位2 进程之间的地址空间和资源都是相互独立的,一个进程中的线程是共享本进程的地址空间和资源的3 一个进程可以拥有多个线程,多个线程拥有自己的程序计数器,虚拟机栈,本地方法栈,共享进程里的堆和方法区。4 一个进程奔溃了,不会影响其他进程,而一个线程崩溃了会影响其他线程,可能会导致整个进程崩溃。Start()和run()的区别1 start方法是线程启动的方法,run方法是用于执行线程运行时候的代码,run方原创 2021-08-06 17:20:54 · 156 阅读 · 0 评论 -
Synchronized关键字
synchronized关键字是啥?1 syn是通过给对象头加锁,就是设置对象头的锁状态的方式,用来控制线程同步的,可以用来修饰 方法 代码块 ,可以保证原子性,有序性,可见性,1.6之前syn是重量级锁,效率很低下,在1.6之后进行优化,比如说:锁消除,偏向锁,轻量级锁,重量级锁减小了锁操作的开销。(代码块同步是使用monitorenter和monitorexit指令实现的,线程执行monitorenter指令时尝试获取monitor的所有权,monitorexit退出monitor,不再是这个mo.原创 2021-08-05 23:37:48 · 276 阅读 · 0 评论 -
生产者消费者模型
1 问题描述生产者生成一定量的数据放到缓冲区中,然后重复此过程;与此同时,消费者也在缓冲区消耗这些数据。生产者和消费者之间必须保持同步,要保证生产者不会在缓冲区满时放入数据,消费者也不会在缓冲区空时消耗数据。不够完善的解决方法容易出现死锁的情况,此时进程都在等待唤醒。1 利用缓冲区解决 管程法package 生产者消费者模型;// 利用缓冲区解决 管程法// 生产者 消费者 缓存区 产品public class Storage { public static void main(Str原创 2021-08-04 18:54:04 · 63 阅读 · 0 评论 -
多线程之 死锁
死锁是啥死锁: 是指的是两个或者两个以上的线程在执行的过程中,互相持有对方的资源并且不主动释放造成的恶性循环。死锁的四个必要条件1 互斥条件:线程对所分配的资源具有排他性,即一个资源只能被一个线程占有,直到这个资源被释放2 请求与保持条件:一个线程因为请求被占有资源而发生阻塞的时候,对已经获得的资源保持不放。3 不剥夺条件:线程已获得的资源,在其未使用完之前不能被强行释放,只能在自己使用完毕才能释放这个资源。4 循坏等待条件:当发生死锁的时候所有的线程都会形成一个死循环,造成永久阻塞。如何解决原创 2021-08-04 14:01:35 · 121 阅读 · 0 评论