第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()方法完成后或发生其他终止条件时就会切换到终止状态。