[TOC]
## 线程
- 线程创建
创建一个线程类,需要继承`Thread`类或者实现`Runnable`接口,重写`run`方法
- 开启线程
开启一个线程需要执行`start()`方法
接口开启线程需要调用`Thread(Object <implement Runnable>)`构造方法创建 `Thread `对象.并使用该对象调用`start()`方法
>### 线程操作
- Objec里的方法
```
wait() : 放弃当前线程执行权,释放锁,进入等待队列
notify() : 唤醒一个等待线程。
join() : 当调用join 方法的时候,当前线程会放弃执行权,直到join线程执行完毕。
yield();放弃当前执行权,重新竞争cpu执行权;
线程优先级默认值为5;
setPriority():设置线程优先级 1 - 10 ;
```
>### Thread
- 方法:
```
sleep(int time) : 线程多少秒执行一次.
currentThread():获得当前线程
```
>### 线程安全
当多个线程操作共享属性的时候,此时有可能产生线程安全问题。
- 线程机制
每一个线程都有自己的线程栈,当需要栈操作共享数据时,线程栈会拷贝一份堆中的副本,在栈中操作完副本之后,再将这个新值,同步给堆。
>解决方案
同步代码块,又叫对象锁。
- 语法格式
```
synchronized(任意一个对象,都可以当锁){
包裹课程产生线程安全的代码
}
```
- 注意
```
使用同步代码块的时候,对于锁对象的要求,要求多个线程要使用同一个对象。
```
>### 线程池
*线程池,是一个容纳多个线程的容器。*
- 线程池的创建
```
Executors.newFixedThreadPool(线程数);
```
- 向线程池提交执行任务
```
submit() :
```
```
实现Runnable接口
实现Callable接口
```
- 关闭线程池
```
shutdown()
```
>### 同步方法
*使用synchronized修饰方法。*
```
1.非静态方法锁对象默认为this;
2.静态方法锁对象默认为当前字节码文件,类名.class
```
>### 线程状态
* 新建状态
* 可运行状态
* 阻塞/等待状态
* 运行状态
* 死亡状态
- 第一章 java SE
- 1.1数据类型
- 1.2 流程控制语句
- 1.3 方法
- 1.4 面向对象三特性
- 1.5 对象数组与集合
- 1.6 数组和集合操作工具类
- 1.7 可变参数
- 1.8 String
- 1.9 StringBuilder
- 1.10 final&&finally&&finalize
- 1.11 抽象类与接口
- 1.12 基本数据类型的包装类
- 1.13 泛型
- 1.14 内部类
- 1.15 throw & throws & try catch
- 1.16 线程
- 1.17 BeanUtils
- 1.18 java反射
- 1.19 序列化和反序列化
- 1.20 IO输入输出流
- 1.21 File
- 1.22 RandomAccessFile
- 1.23 第三方工具CommonsIO
- 1.24 java网络传输
- 第二章 java EE
- 2.1 maven的配置
- 2.2 Cookie
- 2.3 EL表达式 JSTL
- 2.4 验证相关
- 2.4.1 验证码
- 2.5 防重复提交
- 2.6 activeMq的使用
- 2.7 jtl的使用
- 2.8 Upload上传文件
- 第三章 Spring相关
- 3.1 IOC/DI
- bean的生命周期
- bean的配置
- 3.2 Spring Aop
- 3.3 Spring Jdbc
- 3.4 事物相关
- 事物
- 事物的使用
- 3.5 MBG使用
- 第四章 解决问题方法
- 4.1 List转换为Map
- 4.2 结果返回类
- 4.3 HSSF的使用
- 第五章 排序
- 5.1 冒泡排序
- 5.2 选择排序
- 5.3 快速排序