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