摘要: package com.atguigu.java; import org.junit.Test; /** * String的使用 * * @author shkstart * @create 2019 上午 10:26 */ public class StringTest { /* 结论: 1.常量 阅读全文
posted @ 2021-02-19 22:02 银月记 阅读(61) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java2; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadPoolE 阅读全文
posted @ 2021-02-19 20:50 银月记 阅读(38) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java2; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTas 阅读全文
posted @ 2021-02-19 17:43 银月记 阅读(28) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java2; /** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的 阅读全文
posted @ 2021-02-19 17:28 银月记 阅读(45) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java2; /** * 线程通信的例子:使用两个线程打印 1-100。线程1, 线程2 交替打印 * * 涉及到的三个方法: * wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。 * notify():一旦执行此方法,就会唤醒被wai 阅读全文
posted @ 2021-02-19 16:33 银月记 阅读(21) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.exer; /** * 银行有一个账户。 有两个储户分别向同一个账户存3000元,每次存1000,存3次。每次存完打印账户余额。 分析: 1.是否是多线程问题? 是,两个储户线程 2.是否有共享数据? 有,账户(或账户余额) 3.是否有线程安全问题?有 4.需 阅读全文
posted @ 2021-02-19 15:18 银月记 阅读(36) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java1; import java.util.concurrent.locks.ReentrantLock; /** * 解决线程安全问题的方式三:Lock锁 JDK5.0新增 * * 1. 面试题:synchronized 与 Lock的异同? * 相同: 阅读全文
posted @ 2021-02-19 15:15 银月记 阅读(40) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java1; //死锁的演示 class A { public synchronized void foo(B b) { //同步监视器:A类的对象:a System.out.println("当前线程名: " + Thread.currentThread() 阅读全文
posted @ 2021-02-19 15:02 银月记 阅读(21) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java1; /** * 演示线程的死锁问题 * * 1.死锁的理解:不同的线程分别占用对方需要的同步资源不放弃, * 都在等待对方放弃自己需要的同步资源,就形成了线程的死锁 * * 2.说明: * 1)出现死锁后,不会出现异常,不会出现提示,只是所有的线程都 阅读全文
posted @ 2021-02-19 14:58 银月记 阅读(77) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java1; /** * 使用同步机制将单例模式中的懒汉式改写为线程安全的 * * @author shkstart * @create 2019-02-15 下午 2:50 */ public class BankTest { } class Bank{ p 阅读全文
posted @ 2021-02-19 14:07 银月记 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 一、使用实现Runnable接口的方式 package com.atguigu.java; /** * 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * * 1.问题:卖票过程中,出现了重票、错票 -->出现了线程的安全问题 * 2.问题出现的原因:当某个线程操作车票 阅读全文
posted @ 2021-02-19 13:31 银月记 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 创建三个窗口卖票,总票数为100张. ①使用继承Thread类的方式 //存在线程的安全问题,待解决。 class Window extends Thread{ private static int ticket = 100; @Override public void run() { while( 阅读全文
posted @ 2021-02-19 01:54 银月记 阅读(59) 评论(0) 推荐(0) 编辑