摘要:
函数式编程和面向对象的区别 阅读全文
摘要:
JDK1.5之后提供的 Execituors生产线程池的工厂类 线程池的接口类:ExecutorService 1创建线程池的工厂类 创建类实现Runnable接口,重写里面的run方法 传递线程池任务,执行 线程池里一共就两个线程 销毁线程池 线程池销毁后 程序自动停止 线程池毁后再来执行线程任务 阅读全文
摘要:
线程的底层原理 集合有很多种,线程池的集合用LinkedList最好 阅读全文
摘要:
创建吃货类 测试类 阅读全文
摘要:
创建包子类 包子铺 定义包子的成员变量,生成一个带包子参数的构造方法 继承Thread线程类。重写run方法。保证只有一个在执行,所以用到同步技术 wait要try catch 外层定义变量,标明生产包子的数量 生产好了包子进行唤醒 加上while循环 阅读全文
摘要:
吃货线程 测试类 阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:
把上一节买包子的代码拿过来。并没有老板的的线程的代码 5秒后自动执行后续代码 再复制一份顾客的代码 区分为顾客1和2 nortify线程只能唤醒一个。 每次只能唤醒一个线程 两个线程都唤醒 阅读全文
摘要:
创建匿名线程类,里面重写run方法 保证等待和唤醒线程只有一个在执行 这里的异常只能用try catch 不用用throws的方式,因为父类的run方法没有抛异常,所以之类也不能抛 顾客的线程写完了,调用start开始执行 写老板的线程 老板需要花5秒做包子,所以需要睡眠5秒。sleep有异常需要t 阅读全文
摘要:
Waiting 等待唤醒,也叫作线程之前的通讯 一个线程等待,一个线程唤醒,形成线程之间的通讯 阅读全文
摘要:
Thread中有个嵌套类 它描述了线程的状态 线程状态的图 Object类中的Wait方法和notify方法 阅读全文
摘要:
jdk1.5之后出现的 lock接口的实现类 第一步骤创建lock对象,这里是多态的写法 代码放在try catch里面 无论程序是否有一场,最终都会解锁。 阅读全文
摘要:
因为方法是静态的,所以变量也要是静态的。静态访问静态 同样可以保证线程的安全 静态方法的锁对象 这里代码块用this就报错。 使用Runnablec.class可以保证锁对象是唯一的 阅读全文
摘要:
这里输出一下this对象 这里再打印run。看看和this是不是同一个对象 所以同步对象默认使用的对象就是当前线程对象。 把方法体的sunchrized注释。然后下面用方法体锁住this对象。如果能保证安全就说明this是唯一的 输出的结果 同样可以保持唯一 阅读全文
摘要:
阅读全文
摘要:
同步代码块 解决了线程安全的问题。 阅读全文
摘要:
解释一下线程安全问题产生的原理 三个线程t0 t1 t2 。加上t0抢到cpu的执行权 t0抢到了cpu的执行权。,但是走到if语句的地方。执行了sleep,就失去了执行权 假设t2抢到了执行权也来执行run方法 t2睡醒了 重复票的问题。三个线程同时执行到了 输出的这行代码 总结 阅读全文
摘要:
多个线程共享票源 创建的是一个实现类,传到三个线程里面。这样可以保证票就100张。三个线程来进行卖票 出现了重复的问题 优化程序,让程序sleep10毫秒 ,增加出现重复的几率 出现了-1的票。不存在的票和重复的票都出现了 。 阅读全文
摘要:
阅读全文