随笔分类 -  Java高级特性

摘要:1.单核处理器也支持多线程执行代码,使用CPU分配时间片来实现。 2.上下文切换:任务从保存到再加载的过程。 3.减少上下文切换(避免频繁切换任务): 1)无锁并发编程。 2)CAS算法。 3)使用最少线程,避免创建不需要的线程。 4)使用协程:单线程里实现多任务的调度。 4.volatile轻量级 阅读全文
posted @ 2021-04-05 20:29 枫叶像思念 阅读(121) 评论(0) 推荐(0)
摘要:一、实现生产者消费者模型 1.使用sychronized和wait notify实现 public static void main(String[] args) throws InterruptedException { AtomicInteger a=new AtomicInteger(5);/ 阅读全文
posted @ 2021-03-31 10:28 枫叶像思念 阅读(342) 评论(0) 推荐(1)
摘要:1.线程池原理 (1)银行办理窗口。柜台有五个(最大线程数),但是在不忙的情况下只有3个开启着(核心线程数)。 现在来了三个人 办理业务 。那么三个窗口开始办理。 (2)前面柜台三个人还没办理完业务,再来的人进去椅子坐着(等待队列)。 (3)大厅满了,又来一个客人,这时启动其他工作线程 4号窗口 ( 阅读全文
posted @ 2021-03-07 20:47 枫叶像思念 阅读(364) 评论(0) 推荐(0)
摘要:1.我们使用CAS在硬件底层方面实现了原子的修改一个内存的值,但是如何对于对象来进行原子修改呢? 我们来了解下AQS 2.AbstactQueuedSynchronizer 好长的单词。。。 3.成员变量 4.在外面等待的线程是在一个FIFO的队列。head、tail分别是队列的头和尾 5.队列的n 阅读全文
posted @ 2021-03-05 22:33 枫叶像思念 阅读(124) 评论(0) 推荐(0)
摘要:1.reentrantLock的含义 2.它实现了Lock接口 阅读全文
posted @ 2021-03-03 22:59 枫叶像思念 阅读(73) 评论(0) 推荐(0)
摘要:1.对象的结构 2.在mark word里面的 锁标志位 3.synchronized底层实现 synchronized经过javac编译之后,生成两个字节码 monitorenter moniterexit monitor是监视器(管程)的意思,监视器只允许1个线程进入。 结合下图 线程A进入监视 阅读全文
posted @ 2021-03-03 20:57 枫叶像思念 阅读(295) 评论(2) 推荐(0)
摘要:1.七大参数(根据阿里巴巴手册 尽量不要用Executor 要使用原生ThreadPoolExecutor) (1)corePoolSize:线程池中常驻核心线程数 (2)maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值必须大于等于1 (3)keepAliveTime:多余的 阅读全文
posted @ 2021-02-25 12:40 枫叶像思念 阅读(66) 评论(0) 推荐(0)
摘要:我们实现一个例子。 我们有一个count变量。建立10个线程,每个线程都对count加1000次。(count++) public class cas { static int count=0; public static void main(String[] args) throws Interr 阅读全文
posted @ 2021-02-24 23:10 枫叶像思念 阅读(153) 评论(0) 推荐(0)
摘要:1.计算机的cpu模型 。 2. 3.JMM的模型类似于计算机CPU的模型 我们的每一个线程都会有一个 主内存的共享变量的一个副本。 4.第一个volatile例子 不加volatile 输出结果 结果表示 标志位以及变为true。但是还是没跳出thread1的循环。 加了volatile vola 阅读全文
posted @ 2021-02-21 00:32 枫叶像思念 阅读(73) 评论(0) 推荐(0)
摘要:静态代理 动态代理 动态代理有三个角色: 接口 真实角色 生成代理角色的角色 java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处 阅读全文
posted @ 2021-02-06 12:11 枫叶像思念 阅读(272) 评论(0) 推荐(0)
摘要:假设我们现在作为学生要去吃饭,服务员来服务我们。 我们来看一下静态代理例子。 在下图中 我们新建一个student传参到waiter里面 而waiter类里的那个student实例赋值传进来的值 然后调用waiter的eat。在waiter的eat里面有waiter自己的服务,还有student的e 阅读全文
posted @ 2021-02-03 15:03 枫叶像思念 阅读(171) 评论(0) 推荐(0)
摘要:1.JDBC/ODBC思想:根据API编写的程序可以和驱动管理器(DriverManager)进行通信,驱动管理器通过驱动程序与实际的数据库进行通信。 2.驱动程序分类: (1)JDBC转化为ODBC (2)部分Java程序和部分本地代码。 (3)纯Java客户端类库。:将请求发送给服务器构件,该构 阅读全文
posted @ 2021-01-17 13:40 枫叶像思念 阅读(355) 评论(0) 推荐(0)
摘要:1.每个进程都拥有自己的一整套变量,线程共享数据。 2.共享变量使得线程之间通信更有效、容易。 3.关于Runnable函数式接口的问题参考我的博客:https://www.cnblogs.com/cckong/p/14264821.html 4.直接调用run方法只会在一个线程执行,是同步的,st 阅读全文
posted @ 2021-01-11 08:44 枫叶像思念 阅读(255) 评论(0) 推荐(0)