摘要:
ExecutorService pool = Executors.newSingleThreadExecutor();//线程池中只有一个线程 单个线程/*第一种方法:运行结果发现,十个任务都是被同一个线程执行的pool-1-thread-1 >ok pool-1-thread-1 >ok pool 阅读全文
摘要:
阻塞队列特性:FIFO 先进先出 first input first output 在多线程并发处理,线程池中我们会使用到阻塞队列。 不得不阻塞: 写入:如果队列满了,就必须阻塞等待 取出:当队列是空的,那就必须阻塞等待生产 BlockingQueye : 阻塞队列 Deque : 双端队列 Abs 阅读全文
摘要:
从工作目录add到暂存区 从暂存区commit到本地仓库 本地仓库push提交到远程 workspace --add--> Index --commit-->Repository push-> Remote 创建本地仓库的方法: 1、创建全新的仓库,命令执行后生成一个隐藏的.git文件夹 git i 阅读全文
摘要:
cd *** 改变目录至*** cd .. 返回上一级目录 touch index.html 当前目录下创建文件 mkdir *** 创建***文件夹 mv 谁 谁 移动文件到哪个文件里 ls 列出当前目录中的所有文件 ll列出的更加详细 rm 删除一个文件 rm index.html rm -r 阅读全文
摘要:
ReadWriteLock:读写锁 已知实现类,ReentrantReadWriteLock -->可重入读写锁 ReadWriteLock维护一对关联的locks,一个用于只读操作,一个用于写入操作。 read lock可以有多线程同时读取,write lock只能有一个线程去写。 /*希望写入的 阅读全文
摘要:
1、CountDownLatch 减法计数器 CountDownLatch 作为计数器使用,顾名思义,是做 - - 的计数器。 在必须要执行某些任务的时候使用此辅助。 如下图可见,未等待计数器归零,则有可能出现有的学生还没出去就已经关门了。 解决办法就是添加一个await()等待该计数器归零。在执行 阅读全文
摘要:
List<String> list = new CopyOnWriteArrayList<>();for (int i =1; i <= 10; i++) { new Thread(()->{ list.add(UUID.randomUUID().toString().substring(0,5)) 阅读全文
摘要:
public class Lock8 { public static void main(String[] args) { Phone p = new Phone(); new Thread(()->{ p.sendMsg();},"a").start(); TimeUnit.SECONDS.sle 阅读全文
摘要:
1.栈溢出异常(StackOverflowError) 形成原因: 死循环调用方法。 前几天提了关于栈溢出的一个故障单。微服务A请求微服务B资源的一个方法变成了懒加载,懒加载方法中判断当资源为空时就向微服务C请求资源,请求得到资源后,先缓存,再通微服务A去更新数据库{更新表结构时候还会向微服务B请求 阅读全文