reupe

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

01 2020 档案

摘要:死锁,就是当两个以上的任务,双方都在等待对方完成释放资源,但是没有一方提前退出时,就称之为死锁。 哲学家吃饭问题 假设有3名哲学家在圆桌上准备吃面条,现在,只有3根筷子(不是三双),只有同时拥有2根(一双)筷子的哲学家才能吃,另外的人需要等待他吃完释放筷子。这里面: 资源: 指的就是筷子 任务: 每 阅读全文
posted @ 2020-01-21 16:48 yxlaisj 阅读(186) 评论(0) 推荐(0)

摘要:BlockingQueue的继承结构 BlockingQueue是线程安全的阻塞队列,当队列为空时,拉取队列的线程会等待队列中重新有元素;当队列满时,添加元素的线程会等待队列有空位储存新元素。BlockingQueue的继承接口如下: 生产者-消费者模式 ArrayBlokingQueue实现类需要 阅读全文
posted @ 2020-01-20 17:43 yxlaisj 阅读(247) 评论(0) 推荐(0)

摘要:sleep()和yield()方法,不会释放锁,而wait()方法会释放当前线程的锁,所以,wait()方法必须是在同步代码块中调用。 应用场景 多个线程合作执行某项任务的时候,有线程A和线程B,它们使用同一对象锁,同一时间它们只有其中之一可以运行,另外一个线程处于等待状态。如下事件图表所示 线程A 阅读全文
posted @ 2020-01-17 15:02 yxlaisj 阅读(1497) 评论(0) 推荐(0)

摘要:启动应用,即开启一个进程,其中会有很多线程在跑,main线程即使执行完毕,子线程可能还在执行。如果想强制终止本次进程,使用System.exit(0)。 阅读全文
posted @ 2020-01-15 20:13 yxlaisj 阅读(1344) 评论(0) 推荐(0)

摘要:从网上看到的线程的六种状态图,很清晰地展示了各个状态之间的切换以及可能的方法。 BLOCKED和WAITING的区别 BLOCKED: 一般指的是被动阻塞,比如一个线程在synrhonized同步代码块外尝试获取锁时的阻塞; WAITING: 一般指的是主动进入等待状态,比如调用sleep,wait 阅读全文
posted @ 2020-01-14 19:49 yxlaisj 阅读(161) 评论(0) 推荐(0)

摘要:经常有这样一个问题: int j; for(int i = 0; i < 1000; i++){ j = j++; } System.out.println(j); // 输出0 为什么无论循环多少次,j都为0? 原因有两点: 1. 对于j++, java会使用中间缓存机制,先把j记到缓存 2. " 阅读全文
posted @ 2020-01-10 09:52 yxlaisj 阅读(546) 评论(0) 推荐(0)

摘要:1. 为什么使用ThreadLocal? 假设我们开发某平台服务,提供一系列接口,客户访问时需要必须传入user信息,服务端最好是将user信息保存为全局变量,一边在处理某一次请求的过程中能够随时获取,而无需费力进行参数的透传。对于服务端而言,每一个请求,就是一个线程,而每个请求传来的user信息, 阅读全文
posted @ 2020-01-05 20:27 yxlaisj 阅读(384) 评论(0) 推荐(0)

摘要:1. 基本概念 程序运行过程中,两个或多个线程(thread)并发执行并共享某个资源时,可能对共享资源不同步地修改,造成数据错误(所谓错误,就是修改后的数据不符合预期),为了避免数据错误,普遍采用了线程同步技术,所谓同步,就是避免多个线程毫无规则地征用资源,而是使这些线程看起来像是步调一致、有序地使 阅读全文
posted @ 2020-01-01 10:57 yxlaisj 阅读(351) 评论(0) 推荐(0)