最近在公司做一个数据可视化相关的项目,使用了Airbnb开源维护的企业级BI数据平台superset,相较于tableau这种收费的商业软件,S...
思路:将两个数组merge成一个数组help,建立三个工作索引,两个工作索引分别指向nums1,nums2,值小的填入help中。直到遍历完两个...
ThreadLocal作用:通常用于同一个线程内,跨类,跨方法传递数据。如果没有ThreadLocal,那么相互之间的信息传递,势必要靠返回值和...
所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些线程都将无法向前推进 死锁产生的4个必要条件? 互斥条件:一个资源...
线程可以拥有自己的操作栈,程序计数器,局部变量表等资源,它与同一进程内的其他线程共享该进程的所有资源(所有的初始化的资源,因为局部变量表往往是副...
四种方式创建线程: 继承Thread类 实现Runnable接口 应用程序使用Executor框架创建线程池 实现Callable接口 Runn...
我们都知道修饰在普通方法和非静态方法上的synchronized形成的锁是对象锁。线程是交替执行抢占CPU时间片的,但是锁是一直存在的,如果不释...
volatile与synchronized区别:volatile不会进行加锁操作。因此也不会使执行线程阻塞,因此volatile是一种比sunc...
synchronized是java的一个关键字,它能够将代码块(方法)锁起来。synchronized是一种互斥锁,一次只能允许一个线程进入被锁...