摘要:
变量: 1.系统变量 1.1全局变量: 作用域:服务器每次启动将会为所有的全局变量赋初始值,针对所有的会话(连接)有效,但不能跨重启(即数据库重启后,又会恢复到默认值) 1.2会话变量 作用域:仅仅针对于当前会话(连接)有效 2.自定义变量:作用域:针对于当前会话(连接)有效。同于会话变量的作用域 阅读全文
摘要:
在java官方文档中描述:ThreadLocal类是提供线程内部的局部变量,这种变量在多线程环境下访问(通过get/set访问)时能保证各个线程的变量相对独立于 其他线程内的变量,ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文 我们可以得知Thre 阅读全文
摘要:
1.CPU [root@bogon ~]# top top - 22:14:51 up 7 days, 12:38, 1 user, load average: 0.60, 0.29, 0.19 Tasks: 193 total, 1 running, 192 sleeping, 0 stopped 阅读全文
摘要:
产生死锁的原因: 1.系统资源不足 2.进程进行推进的顺序不合适 3.资源分配不当 按照图示写个死锁: class HoldLockThread implements Runnable{ //定义两个对象,根据这两个对象来加锁 private String lockA; private String 阅读全文
摘要:
为什么使用线程池优势? 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过最大数量,超出部分将排队等待。 其他线程执行完毕,再从队列中取出任务来执行 主要特点: 1.线程复用 2.控制最大并发数。 3.管理线程 优点: 1.降低资源消耗 阅读全文
摘要:
Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。 特点: 1.Callable 可以抛出异常 2.Callable 可以返回结果 3.Callable 调用get方法时会阻塞 4.C 阅读全文
摘要:
题目:synchronized和Lock有什么区别?用新的lock有什么好处?举例说说 1.原子构成: synchronized是关键字属于JVM层面 monitorenter(底层通过monitor对象来完成。其实wait/notify等方法也依赖于monitor对象,只能在同步块或者方法中才能调 阅读全文
摘要:
.生产者和消费者的synchronized 版本以及虚假唤醒问题 先看一个场景: 一个卖面的面馆,有一个做面的厨师和一个吃面的食客,需要保证,厨师做一碗面,食客吃一碗面, 不能一次性多做几碗面,更不能没有面的时候吃面; 按照上述操作,进行十轮做面吃面的操作。 样例代码: public class J 阅读全文
摘要:
发现队列Queue和List/Set平级 阻塞队列的四组API: 方式 抛出异常 有返回值,不抛出异常 阻塞 等待 超时等待 添加 add offer() put() offer 移除 remove poll() take() poll 检测队首元素 element peek() 1.抛出异常api 阅读全文
摘要:
1CountDownLatch(减法计数器) 1.CountDownLatch:减法记数器 有三个重要方法: 1.初始化,并确定计数器最大值 CountDownLatch countDownLatch = new CountDownLatch(6); 2.计数器数量-1 countDownLatch 阅读全文