摘要: 线程协作:生产者消费者模式实现方式之“管程法” --- 借助一个缓冲区 模拟买馒头,生产出来了才能卖 阅读全文
posted @ 2019-07-28 08:46 codeFlyer 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 发生:当线程中锁中套锁,两个线程在运行时都需要对方所占用的锁而不释放自己的锁,这样就造成了线程的停滞。 避免:不要再在同一代码块中同时持有多个对象的锁,避免锁中上锁 阅读全文
posted @ 2019-07-27 17:57 codeFlyer 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 多线程的并发执行可以提高程序运行的效率,但当多个线程去处理同一个资源时,就容易产生一些安全问题。如模拟抢票程序,如果不加线程安全处理的话,就很容易多个线程抢到同一张票,或者出现余票为负数的情况。 synchronized关键字,就是用来控制线程同步的,保证我们的线程在多线程环境下,synchroni 阅读全文
posted @ 2019-07-27 17:17 codeFlyer 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 线程状态有新生状态,就绪状态,运行状态,阻塞状态,死亡状态 1. 新建(NEW):新创建了一个线程对象。 2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。 3. 阅读全文
posted @ 2019-07-26 21:53 codeFlyer 阅读(341) 评论(0) 推荐(0) 编辑
摘要: lambda表达式带参数: 带参数和返回值 例一: 带参数和返回值 例二: 阅读全文
posted @ 2019-07-26 09:34 codeFlyer 阅读(9651) 评论(0) 推荐(0) 编辑
摘要: Lambda表达式由匿名内部类简化而来 在线程的简化中很常见 下面以实现runnable方法为例逐步由各种内部类推导转化为lambda表达式 下面自定义一个接口,举例实现Lambda表达式: * 一个简洁直观的应用lambda表达式的例子: 阅读全文
posted @ 2019-07-26 09:31 codeFlyer 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 继承Thread类创建多线程 实现Runnable接口创建多线程 实现Runnable接口相对于继承Thread类来说,适合多个相同线程处理同一个资源(如抢票)的情况,可以避免由Java的单继承带来的局限性。 实际应用中,使用实现runnable接口的方式创建多线程的情况要比继承Thread类更常见 阅读全文
posted @ 2019-07-25 22:47 codeFlyer 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 静态代理有三要素:1,共同实现的接口 2,真实成员 3,代理成员 共同实现的接口:Star.java 真实成员:RealStar.java 代理成员ProxyStar.java 测试Test.java 阅读全文
posted @ 2019-07-25 22:26 codeFlyer 阅读(268) 评论(0) 推荐(0) 编辑
摘要: IO操作在实际开发中写起来不禁有些繁琐,为了避免重复造轮子,提高工作效率,我们很多时候可以使用已经封装好了的IO操作项目,如CommonsIO。下面介绍CommonsIO的环境搭建: 1,进入阿帕奇软件基金会官网 (域名: apache.org) 2,下滑到最下方找到Commons标签,进入找到IO 阅读全文
posted @ 2019-07-25 16:37 codeFlyer 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 为了进一步提高IO流的效率,在IO包里提供了两个带缓冲的字节流,分别是BufferedInputStream和BufferedOutPutStream。 通过API文档的查询和学习,具体操作很简单,只需要直接在字节流操作的基础上“套上”缓冲流即可。 输入流: 文件拷贝: 缓冲流文件拷贝程序中包含一个 阅读全文
posted @ 2019-07-25 15:45 codeFlyer 阅读(307) 评论(0) 推荐(0) 编辑