file

递归

字符集

编码

乱码gbk,a我m,utf-8

缓冲流

冒泡排序
java
//冒泡排序
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) { // 外层循环控制排序轮数
for (int j = 0; j < n -i - 1; j++) { // 内层循环负责比较和交换
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//逆向冒泡排序
public static void bubbleSort2(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) { // 外层循环控制排序轮数
for (int j = n-2; j >=i; j--) { // 内层循环负责比较和交换
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
转换流

打印流

数据流

多线程

callable接口创建
Thread常见方法

线程安全问题

锁

用this锁可以锁住不同的类对象(资源),比如Account资源有两个线程争抢,他的余额是100000.
而如果用this锁,只有一个用户能带着account过来执行。其他的如Accounts不受影响。
静态方法用Account.class锁会锁住所有线程。
字符串

reentrantlock

线程池
拒绝策略

runnable任务

callable任务

Executors创建线程池

并发和并行
