摘要: import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadPoolExecutor;/** * 创建线程的方式四:使用线程池 阅读全文
posted @ 2019-12-26 01:07 图图W 阅读(429) 评论(0) 推荐(0) 编辑
摘要: import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * 创建线程的方式三:实现Callable接口 阅读全文
posted @ 2019-12-26 01:05 图图W 阅读(1169) 评论(0) 推荐(0) 编辑
摘要: /** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员 * 会叫生产者停一下,如果店中有空位放产品 阅读全文
posted @ 2019-12-26 01:04 图图W 阅读(291) 评论(0) 推荐(0) 编辑
摘要: /** * 线程通信的例子:使用两个线程打印 1-100。线程1, 线程2 交替打印 * * 涉及到的三个方法: * wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。 * notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高 阅读全文
posted @ 2019-12-26 01:02 图图W 阅读(257) 评论(0) 推荐(0) 编辑
摘要: import java.util.concurrent.locks.ReentrantLock;/** * 解决线程安全问题的方式三:Lock锁 JDK5.0新增 * * 1. 面试题:synchronized 与 Lock的异同? * 相同:二者都可以解决线程安全问题 * 不同:synchroni 阅读全文
posted @ 2019-12-26 00:59 图图W 阅读(331) 评论(0) 推荐(0) 编辑
摘要: /** * 使用同步方法解决实现Runnable接口的线程安全问题 * * * 关于同步方法的总结: * 1. 同步方法仍然涉及到同步监视器,只是不需要我们显式的声明。 * 2. 非静态的同步方法,同步监视器是:this * 静态的同步方法,同步监视器是:当前类本身 * */class Window 阅读全文
posted @ 2019-12-26 00:57 图图W 阅读(499) 评论(0) 推荐(0) 编辑
摘要: /** * 使用同步方法处理继承Thread类的方式中的线程安全问题 * */class Window4 extends Thread { private static int ticket = 100; @Override public void run() { while (true) { sh 阅读全文
posted @ 2019-12-26 00:56 图图W 阅读(510) 评论(0) 推荐(0) 编辑
摘要: package com.atguigu.java;/** *//** * 使用同步代码块解决继承Thread类的方式的线程安全问题 * * 例子:创建三个窗口卖票,总票数为100张.使用继承Thread类的方式 * * 说明:在继承Thread类创建多线程的方式中,慎用this充当同步监视器,考虑使 阅读全文
posted @ 2019-12-26 00:55 图图W 阅读(366) 评论(0) 推荐(0) 编辑
摘要: /** * 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * * 1.问题:卖票过程中,出现了重票、错票 -->出现了线程的安全问题 * 2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票。 * 3.如何解决:当一个线程a在操 阅读全文
posted @ 2019-12-26 00:53 图图W 阅读(398) 评论(0) 推荐(0) 编辑