摘要: 反射概述(静态 VS 动态语言) Java.Reflection 静态 VS 动态语言 阅读全文
posted @ 2020-07-16 23:52 小卢传 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 自定义注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.an 阅读全文
posted @ 2020-07-16 21:37 小卢传 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 元注解 代码如下 import java.lang.annotation.*; //测试元注解 @MyAnnotation public class Test02 { @MyAnnotation public void test(){ } } //定义一个注解 //Target 表示我们的注解可以用 阅读全文
posted @ 2020-07-16 21:23 小卢传 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 内置注解 public class Test01 extends Object{ //@Override 重写的注解 @Override public String toString() { return super.toString(); } //Deprecated 不推荐程序员使用,但是可以使 阅读全文
posted @ 2020-07-16 21:07 小卢传 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 什么是注解 Java.Annotation //什么是注解 public class Test01 extends Object{ //@Override 重写的注解 @Override public String toString() { return super.toString(); } } 阅读全文
posted @ 2020-07-16 20:29 小卢传 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 线程小结(代码) import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; //回顾总结线程的创建 pub 阅读全文
posted @ 2020-07-16 20:15 小卢传 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 线程池 背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。 思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。 好处: 提高响应速度(减少了创建新线程的时间) 降低资源消耗(重复利用线程 阅读全文
posted @ 2020-07-16 20:08 小卢传 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 信号灯法 //测试生产者消费者问题2:信号灯法,标志位解决 public class TestPc2 { public static void main(String[] args) { TV tv = new TV(); new Player(tv).start(); new Watcher(tv 阅读全文
posted @ 2020-07-16 19:54 小卢传 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 管程法 //测试:生产者消费者模型——>利用缓冲区解决:管程法 //生产者,消费者,产品,缓冲区 public class TestPC { public static void main(String[] args) { SynContainer container = new SynContai 阅读全文
posted @ 2020-07-16 19:42 小卢传 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 线程协作/线程通信问题-分析及解决方式 生产者消费者模式(问题) 应用场景:生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费。 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止。 如果仓库中放有 阅读全文
posted @ 2020-07-16 17:20 小卢传 阅读(156) 评论(0) 推荐(0) 编辑
摘要: Lock锁和与synchronized对比 从JDK5.0开始,Java提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。同步锁使用Lock对象充当 java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问, 阅读全文
posted @ 2020-07-16 16:50 小卢传 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 死锁 多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形,某一个同步块同时拥有"两个以上的锁"时,就可能会发生"死锁"的问题。 产生死锁的四个必要条件: 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进 阅读全文
posted @ 2020-07-16 16:28 小卢传 阅读(169) 评论(0) 推荐(0) 编辑
摘要: CopyOnWriteArrayList import java.util.concurrent.CopyOnWriteArrayList; //测试JUC安全类型的集合 public class TestJUC { public static void main(String[] args) { 阅读全文
posted @ 2020-07-16 12:08 小卢传 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 线程同步方法及同步块 同步方法 由于我们可以通过private关键字来保证数据对象只能被方法访问,所以我们只需要针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法: synchronized方法和synchronized块. 同步方法:public synchroniz 阅读全文
posted @ 2020-07-16 11:59 小卢传 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 线程同步机制(重点) 多个线程操作同一个资源 并发 并发:同一个对象被多个线程同时操作 线程同步 现实生活中,我们会遇到"同一个资源,多个人都想使用"的问题,比如,食堂排队打饭,每个人都想吃饭,最天然的解决办法就是,排队,一个个来。 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个 阅读全文
posted @ 2020-07-16 10:50 小卢传 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 线程三大不安全案例 买票 //不安全的买票 //线程不安全,有负数 public class UnsafeBuyTicket { public static void main(String[] args) { BuyTicket station = new BuyTicket(); new Thr 阅读全文
posted @ 2020-07-16 10:48 小卢传 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 守护(daemon)线程 线程分为用户线程和守护线程 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕 如,后台记录操作日志,监控内存,垃圾回收等待.. //测试守护线程 //上帝守护你 public class TestDaemon { public static void main 阅读全文
posted @ 2020-07-16 01:26 小卢传 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 线程优先级 Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。 线程的优先级用数字表示,范围从1~10. Thread.MIN_PRIORITY = 1; Thread.MAX_PRIORITY = 10; Thread.NORM_P 阅读全文
posted @ 2020-07-16 01:15 小卢传 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 观测线程状态 Thread.State 线程状态。线程可以处于以下状态之一: new 尚未启动的线程处于此状态。 RUNNABLE 在JAVA虚拟机中执行的线程处于此状态 BLOCKED 被阻塞等待监视器锁定的线程处于此状态 WAITING 正在等待另一个线程执行特定动作的线程处于此状态 TIMED 阅读全文
posted @ 2020-07-16 00:02 小卢传 阅读(101) 评论(0) 推荐(0) 编辑