线程通信
摘要:一 概述: 多个线程执行不同任务获取同一个资源,此时需要线程通信来帮助解决线程之间对同一个变量的使用或操作。(避免对同一共享变量的争夺,导致死锁) 于是我们引出了等待唤醒机制:(wait()、notify())就是在一个线程进行了规定操作后,就进入等待状态(wait),等待其他线程执行完他们的指定代
阅读全文
线程同步机制3(Lock)
摘要:Lock锁 Java5开始,可以使用Java.util.concurrent.locks.Lock 接口显示定义同步锁对象,实现同步机制,主要实现类是ReentrantLock类。可使用ReentrantLock类显示加锁和释放锁。达到synchronized的效果。 Lock实现提供比使用sync
阅读全文
线程同步机制2(死锁)
摘要:死锁 1 什么情况下会产生死锁 ①. 资源有限②. 同步嵌套 2 定义: 一般指是同步代码块的嵌套引起的,两个线程各自拿着自己的对象锁不放,造成一个一直僵持的局势 两个线程都抢到了资源,彼此都在对方释放资源,导致死锁 为避免死锁,在以后的开发中尽量减少同步的资源,减少同步代码块的嵌套结构的使用。 案
阅读全文
线程同步机制*
摘要:一 基本概念 多个线程并发读写同一个临界资源时会发生线程并发安全问题当多个线程同时访问同一种共享资源时,可能会造成数据的覆盖等不一致性问题,此时就需要对线程之间进行通信和协调,该机制就叫做线程的同步机制 异步操作:多线程并发的操作,各自独立运行同步操作:多线程串行的操作,先后执行的顺序。 二 实现方
阅读全文
线程的常用方法
摘要:Thread类常用方法 (1) thread类中设置和获取线程名称的方法 void setName(string Name) 将此线程的名称更改为等于参数NameString getName() 返回此线程的名称Thread(Runnable target, String name) 通过构造方法
阅读全文
多线程的实现 *
摘要:一 继承Thread类 实现步骤: 定义一个类(MyThread)继承Thread类在MyThread类中重写run()方法创建MyThread类的对象启动线程 (对象名.start();) 1 run()和start()方法的区别 (1) 重写run()方法的原因: run()是用来封装被线程执行
阅读全文
多线程(概念)
摘要:一 概述 是指从软件或者硬件上实现 多个线程 并发执行的技术具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 当数据量非常庞大的时候,为了提高效率,采用多线程,如高速收费站有多个,12306买票 二 并行和并发 并行:在同一时刻,有多个指令(程序)在多个CPU上同时执行并发
阅读全文
案例:成绩排序 实现Comparable接口
摘要://先根据学生的成绩降序排序,如果成绩相同再根据年龄升序排序,如果年龄相同再根据名字升序排序 public class ScoreList implements Comparable{ private String name; private int age; private int score;
阅读全文
return两个值
摘要:/** * 方法1:使用集合类 (Map以外的集合类也可以随意使用) * 目标:返回一个数组的最大值和最小值 */ public Map<String, Integer> test1(int[] arr) { Map<String, Integer> map = new HashMap<String
阅读全文
Comparator选择排序器
摘要:步骤1 让元素所属的类实现Comparator接口2 重写compare(T o1, T o2)方法 比较两个参数的顺序。3 o1,o2是接收Compareator的实现类对象 规则: o1-o2 ——>升序 o2-o1 ——>降序
阅读全文
Compareble自然排序器
摘要:让元素所属的类实现Comparable接口,重写compareTo(Object o)方法Collections调用sort方法 即可按照规则排序 public int compareTo(Object o) { Student current=(Student)o; //按照成绩升序score-c
阅读全文
稀疏数组
摘要:分析问题 因为二维数组的很多默认值是0,因此记录了很多没有意义的数据解决: 稀疏数组(记录有效的坐标) 稀疏数组介绍 1 使用条件: 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组 2 处理方式 记录数组一共又几行几列,有多少个不同的值 把具有不同值的元素 的 行、列
阅读全文
Iterator接口
摘要:1 Iterator接口,是集合框架中的核心接口之一,用于遍历集合中元素。 容器类,都有一个iterator方法用以返回一个实现了Iterator接口的对象(称作迭代器) 2 Iterator接口常用方法: (1)boolean hasNest() 判断游标右边是否有元素(2)Object next
阅读全文
Map集合
摘要:一 Map特点 1 双列集合 ,一个键(key)对应一个值(value) 2 键不可以重复,值可以重复(因为键是由Set集合组成的) 3 值可以null 所以 定义一个泛型为String类型的List集合,统计该集合中每个字符出现的次数——>字符--次数:一一对应关系,所以用HashMap 二 Ma
阅读全文
泛型和数据结构
摘要:1 定义: 广泛的数据类型,用T或E表示只能是引用类型(基本类型数据用其包装类) 2 优势: (1)将运行时期的问题提前到编译器(2)避免强制类型转换(3)提高了程序的执行效率 3 使用 一个类的后面有<E>,表示这个类是一个泛型类创建泛型类的对象时,必须给这个泛型确定具体的数据类型 ArrayLi
阅读全文
Collection接口
摘要:集合只能存储引用数据类型,如果要存基本数据类型,需要存对应的包装类char——Characterint——Integer 一 Collection(接口)常用方法 1 add(E e)2 addAll(Collection<? extends E> c) 将指定集合中的所有元素添加到此集合(可选操
阅读全文
缓冲流
摘要:1 概述:也叫高效流,是对4个基本的FileXxx流的增强 2 按数据类型分类 ①字节缓冲流BufferedInputStream ..Out②字符缓冲流BufferedReader ..Writer 3 缓冲流的基本原理: 在创建流对象时会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少I
阅读全文
字节流
摘要:一 使用字节流读数据 read() 优化:使用死循环 FileInputStream fis = new FileInputStream("D:\\\\aaa.txt"); int a; while((a=fis.read())!=-1){ System.out.println((char)a);
阅读全文
I/O流
摘要:流的概述:流是一组有顺序,有起点有终点的字节集合,是对数据传输的总称和抽象。(即两个设备之间传输数据) CPU:中央处理器,处理速度最快内存:临时存储设备,处理速度次之,但数据不保存(内存空间有限)硬盘:持久性存储设备,处理速度最慢,但数据永久保存 I/O流实际上就是读写文件的一种技术 一 IO流的
阅读全文
File类
摘要:一 File类概述 1 File在java.io包下(只有lang包下的不用导包)2 主要用于文件和目录(文件夹)的创建、查找和删除等操作3 File类的对象是文件和目录路径名的抽象表示形式(即File类的对象代表一个文件或一个目录的路径,而不是文件本身,所以 file类只能对文件本身进行操作不能对
阅读全文