commons-IO、多线程

summarize:

commons-Io 就是一个jar包: 导包:建个项目,在建个lib目录,然后复制jar包 ,在lib目录粘贴,Build Path→Add to Build Path 调出牛奶瓶

FilenameUtils  处理文件名,扩展名,判断是否为xxx后缀名

FileUtils  对文件和目录写、读、复制、移动等

 多线程

进程:就是正在运行的程序,在内存中运行,一个程序进入内存,就是一个进程

线程:进程里的一个单元,一个进程至少一个线程,也可以多个线程,叫多线程程序

一个运行中的程序至少有一个进程,一个进程可以包含多个线程

单线程:依次执行 没运行的排队等候
多线程:同时执行 

程序运行原理:

分时调度:轮流使用,平均分配;
抢占式调度:优先级高的使用,相同的随机选择!

原理图:

FilenameUtils

处理文件名(包含文件路径、后缀名)

方法:

getExtension(String path):获取文件的扩展名;

getName(String filename):获取文件名;

isExtension(String fileName,String ext):判断fileName是否是ext后缀名

package com.oracle.demo01;
//处理文件名  FilenameUtils
import org.apache.commons.io.FilenameUtils;

public class Demo01 {
    public static void main(String[] args) {
//        获取文件扩展名
        String ext=FilenameUtils.getExtension("f:\\java\\a.txt");
        System.out.println("扩展名为"+ext);
//        获取文件名
        String fname=FilenameUtils.getName("f:\\java\\a.txt");
        System.out.println("文件夹名为"+fname);
//        判断扩展名
        boolean flag=FilenameUtils.isExtension("f:\\java\\a.txt","txt");
        System.out.println(flag);
    }
}

FileUtils

文件操作(移动文件,读取文件,检查文件是否存在等等)

readFileToString(File file):读取文件内容,并返回一个String

writeStringToFile(File file,String content):将内容content写入到file中;

copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制

copyFile(File srcFile,File destFile);文件复制

package com.oracle.demo01;
//文件工具  FileUtils  写 读 复制
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class Demo02 {
    public static void main(String[] args) throws IOException {
//        copydir();
//        read();
//        write();
    }
    public static void read() throws IOException{
//        明确数据源
        File file=new File("f:\\java\\a.txt");
//        从文件中读取内容
        String content=FileUtils.readFileToString(file);
        System.out.println(content);
    }
    public static void write() throws IOException{
//        明确目的地
        File file=new File("f:\\java\\a.txt");
        FileUtils.writeStringToFile(file, "你好吗",true);//
    }
//    复制文件夹
    public static void copydir() throws IOException{
//        明确数据源
        File src=new File("f:\\java");
//        明确目的地
        File dest=new File("f:\\java2");
//        开始复制
        FileUtils.copyDirectoryToDirectory(src, dest);
    }
}

多线程

360多线程原理图

 

进程:指正在运行的程序,一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能

线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。这个应用程序也可以称之为多线程程序

总结:一个程序运行后至少有一个进程,一个进程中可以包含多个线程

程序运行原理

单线程:依次运行

分时调度:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间

抢占式调度:让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度

package com.oracle.demo02;

public class Demo01 {
    public static void main(String[] args) {
//        单线程程序原理
        for(int i=0;i<100;i++){
            System.out.println(i);
        }
        System.out.println("我在排队");
    }
}

 抢占式调度

大部分操作系统都支持多进程并发运行,现在几乎都支持同时运行多个程序。这些程序是在同时运行,”感觉这些软件好像在同一时刻运行着“

实际上,CPU(中央处理器)使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核而言,某个时刻,只能执行一个线程,而 CPU的在多个线程间切换速度相对我们的感觉要快,看上去就是在同一时刻运行。其实多线程程序并不能提高程序的运行速度但能提高程序运行效率,让CPU的使用率更高

posted @ 2019-06-19 12:01  zhansen521  阅读(522)  评论(0编辑  收藏  举报