摘要: 第一节 线程通信 1.1 线程通信引入 l 应用场景:生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止 如果仓库中放有产品,则消费者可以将产品取 阅读全文
posted @ 2021-01-07 15:26 巧克力曲奇 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 4.1 问题的提出 应用场景: 多个用户同时操作一个银行账户。每次取款400元,取款前先检查余额是否足够。如果不够,放弃取款 分析 使用多线程解决 开发一个取款线程类,每个用户对应一个线程对象 因为多个线程共享同一个银行账户,使用Runnable方式解决 思路 创建银行账户类Account 创建取款 阅读全文
posted @ 2021-01-07 14:43 巧克力曲奇 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 新生状态: 用new关键字建立一个线程对象后,该线程对象就处于新生状态。 处于新生状态的线程有自己的内存空间,通过调用start进入就绪状态 就绪状态: 处于就绪状态线程具备了运行条件,但还没分配到CPU,处于线程就绪队列,等待系统为其分配CPU 当系统选定一个等待执行的线程后,它就会从就绪状态进入 阅读全文
posted @ 2021-01-07 14:03 巧克力曲奇 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 线程定义和创建3:实现Callable接口 JDK1.5后推出了第三种定义线程的方式,实现Callable接口 public class RandomCallable implements Callable<Integer> { @Override public Integer call() thr 阅读全文
posted @ 2021-01-07 13:46 巧克力曲奇 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 2.1 线程定义和创建2:实现Runnable接口 【示例2】使用多线程实现龟兔赛跑2 public class TortoiseRunnable implements Runnable { //private int num = 100; /** * 线程体,线程要执行的任务 */ @Overri 阅读全文
posted @ 2021-01-07 13:32 巧克力曲奇 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 第一节 进程和线程 1.1 进程和线程 l 程序Program n 程序是一段静态的代码,它是应用程序执行的蓝本 l 进程Process n 进程是指一种正在运行的程序,有自己的地址空间 l 进程的特点 n 动态性 n 并发性 n 独立性 n 并发和并行的区别 u 并行:多个CPU同时执行多个任务 阅读全文
posted @ 2021-01-07 13:27 巧克力曲奇 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 序列化和反序列化 什么是序列化和反序列化 序列化 :Serialization 将对象的状态信息转换为可以存储或传输的形式的过程。对象(内存) >字节数组 字节序列(外存、网络) 反序列化:DeSerialization 字节数组 字节序列(外存、网络) >对象(内存) 什么时候需要序列化和反序列化 阅读全文
posted @ 2021-01-07 12:22 巧克力曲奇 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 缓冲字符流BufferedReader和BufferedWriter 问题:之前的文件读写都是按照字节、字符或者数组来实现的,对于文本文件而言,能否按照行,一行行读写呢。 提供了BufferedReader和BufferedWriter实现按行读写 package com.bjsxt.ios3; i 阅读全文
posted @ 2021-01-07 10:48 巧克力曲奇 阅读(198) 评论(0) 推荐(0) 编辑
摘要: package com.bjsxt.ios3; import java.io.*; /** *1.只要关闭高层流即可,底层流不用手动关闭;因为高层的关闭方法就是把底层流关闭 * *2.何时将输出缓冲区的内容写入硬盘 * 1.输出缓冲区满,自动写入硬盘(刷新 flush) * 2.close()会先刷 阅读全文
posted @ 2021-01-07 10:42 巧克力曲奇 阅读(101) 评论(0) 推荐(0) 编辑