第1章 commons-IO
1.1 导入classpath
加入classpath的第三方jar包内的class文件才能在项目中使用
创建lib文件夹
将commons-io.jar拷贝到lib文件夹
右键点击commons-io.jar,Build Path→Add to Build Path
1.2 FilenameUtils
这个工具类是用来处理文件名(译者注:包含文件路径)的,他可以轻松解决不同操作系统文件名称规范不同的问题
l 常用方法:
getExtension(String path):获取文件的扩展名;
getName(String filename
):获取文件名;
isExtension(String fileName,String ext):判断fileName是否是ext后缀名;
1.3 FileUtils
提供文件操作(移动文件,读取文件,检查文件是否存在等等)的方法。
l 常用方法:
readFileToString(File file):读取文件内容,并返回一个String;
writeStringToFile(File file,String content):将内容content写入到file中;
copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
copyFile(File srcFile,File destFile);文件复制
第2章 多线程
2.1 多线程介绍
主线程:
jvm启动后,必然有一个执行路径(线程)从main方法开始的,一直执行到main方法结束,这个线程在java中称之为主线程。当程序的主线程执行时,如果遇到了循环而导致程序在指定位置停留时间过长,则无法马上执行下面的程序,需要等待循环结束后能够执行。
进程:进程指正在运行的程序。
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
进程线程个人理解:进程就是一个正常运行的程序,线程就是负责给进程传输,完成进程的正常运行的东西,员工给老板赚钱老板才会有一个正常的公司。
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程
l 单线程程序:即,若有多个任务只能依次执行。当上一个任务执行结束后,下一个任务开始执行。如,你超市买完东西去结账,你需要排队等待前面的人结完账你才能结账
l 多线程程序:即,若有多个任务可以同时执行。如,你去超市买东西结账,结果超市的收银台都有人,你就能很快的结完结完账
2.2 程序运行原理
l 分时调度
所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。(就是平均分配时间运行)
l 抢占式调度
优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。(先看优先级,优先级高的先运行,优先级一样的看cpu心情随机分配运行时间,)
单线程与多线程图解
运行原理,这三个功能你看着是同时运行,气死是cpu在高速已毫秒切换着三个功能的使用权,就是速度快了反复横跳出现分身的感觉一样。
多
2.3 线程的生命周期:
- 新建 :从新建一个线程对象到程序start() 这个线程之间的状态,都是新建状态;
- 就绪 :线程对象调用start()方法后,就处于就绪状态,等到JVM里的线程调度器的调度;
- 运行 :就绪状态下的线程在获取CPU资源后就可以执行run(),此时的线程便处于运行状态,运行状态的线程可变为就绪、阻塞及死亡三种状态。
- 等待/阻塞/睡眠 :在一个线程执行了sleep(睡眠)、suspend(挂起)等方法后会失去所占有的资源,从而进入阻塞状态,在睡眠结束后可重新进入就绪状态。
- 终止 :run()方法完成后或发生其他终止条件时就会切换到终止状态。