一.File类
(一).概述:
File 类的对象代表操作系统的文件(文件、文件夹),File 类提供了诸如:创建文件对象代表文件,获取文件信息(大小、修改时间)、删除文件、创建文件(文件夹)等功能。
(二.)File类的创建

实例操作:
public class file1 {
    public static void main(String[] args) {
        //1.根据字符串表示的路径,变成File对象
        String str="D:\\java\\Study1\\src\\JAVATEXT\\File";
        File f1=new File(str);
        System.out.println(f1);
        //2.父级路径:D:\java\Study1\src\JAVATEXT
        //子级路径:File
        String parent1="D:\\java\\Study1\\src\\JAVATEXT";
        String child1="File";
        File f2=new File(parent1,child1);
        System.out.println(f2);
        //3.把一个File表示的路径和String表示路径拼接
        File parent2=new File("D:\\java\\Study1\\src\\JAVATEXT");
        String child2="File";
        File f3=new File(parent2,child2);
        System.out.println(f3);
    }
} 
 
(三).常用方法:判断文件类型、获取文件信息功能

(四).常用方法:创建文件、删除文件功能

实例操作:
        //1.创建一个新的空文件
        //如果当前文件不存在,创建成功,如果当前路径存在,创建失败
        File f1=new File("E:\\魏子轩\\B\\abc.text");
        boolean b=f1.createNewFile();
        System.out.println(b);
        System.out.println("------------------------");
        //2.创建一个文件夹(目录)
        //如果当前路径是存在的,则创建失败,返回false
        //mkdir方法只能创建单级文件夹
        File f2=new File("E:\\魏子轩\\B\\abc");
        boolean b2=f2.mkdir();
        System.out.println(b2);
        System.out.println("------------------------");
        //3.创建多级文件夹
        //既可以创建单级文件夹,也可以创建多级文件夹
        File f3=new File("E:\\魏子轩\\B\\aaa\\bbb");
        boolean b3=f3.mkdirs();
        System.out.println(b3);
        System.out.println("------------------------");
        //4.删除文件,文件夹
        //如果删除文件或者空文件夹,删除成功,不经过回收站
        //如果删除有内容的文件夹,删除失败
        File f4=new File("E:\\魏子轩\\B\\abc.text");
        boolean b4=f4.delete();
        System.out.println(b4);
        System.out.println("------------------------"); 
二.多线程(一)
(一).概述
线程(thread)进程可进一步细化为线程,是一个程序内部的执行路径。若一个进程同一时间并行执行多个线程,那么这个进程就是支持多线程的。一个进程中的多个线程共享相同的内存单元/内存地址空间。他们从同一堆中分配对象,可以访问相同的变量和对象
多线程的优点;
- 提高应用程序的响应。可以增强用户体验。
 - 提高计算机系CPU的利用率。
 - 改善程序结构。将既长又复杂的进程分为多个线程,独立运行,利于理解和修改。
 
多线程的应用范围:
- 程序需要同时执行两个或多个任务。
 - 程序需要实现一些需要等待的任务时,如用户输入、文件读写操作、网络操作、搜索等。
 - 需要一些后台运行的程序时。
 
(二).多线程的创建
1.方法一:继承于Thread类

public class Duoxiancheng1 {
    public static void main(String[] args) {
        //多线程的第一种启动方法:继承Thread类的方式实现
        //1.自己定义一个类继承Thread
        //2.重写run方法
        //3.创建子类的对象,并启动多线程
        MyThread mt1=new MyThread();
        MyThread mt2=new MyThread();
        mt1.setName("线程一:");
        mt2.setName("线程二:");
        //开启多线程
        mt1.start();
        mt2.start();
    }
}
public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(getName()+"多线程");
        }
    }
} 
 
2.方法二:实现Runnable接口

public class Duoxiancheng2 {
    public static void main(String[] args) {
        //多线程的第二种启动方法:实现Runnable接口的方法实现
        //1.自己定义一个类实现Runnable接口
        //2.重写里面的run方法
        //3.创建自己的类的对象
        //4.创建一个Thread类的对象,并开启线程
        //创建MyRun对象
        //表示多线程要执行的任务
        Myrunable mr = new Myrunable();
        //创建多线程对象
        Thread t1 = new Thread(mr);
        Thread t2 = new Thread(mr);
        t1.setName("线程1:");
        t2.setName("线程2:");
        //开启线程
        t1.start();
        t2.start();
    }
}
public class Myrunable implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName()+"多线程");
        }
    }
} 
3.方式三:实现Callable接口

public class Duoxiancheng3 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //多线程的第三种创建方式:利用Callable接口和Future接口方式实现
        //特点:可以获取到多线程运行时的结果
        /*
        * 1.创建一个类MyCollable实现Collable接口
        * 2.重写run方法
        * 3.创建MyCollable对象(表示多线程要执行的任务)
        * 4.创建FutureTast的对象(作用管理多线程运行的结果)
        * 5.创建Thread类的对象,并启动(表示线程)
        * */
        MyCallable mc=new MyCallable();
        //作用管理多线程运行的结果
        FutureTask<Integer> ft=new FutureTask<>(mc);
        Thread t1=new Thread(ft);
        t1.start();
        Integer f = ft.get();
        System.out.println(f);
    }
}
public class MyCallable implements Callable {
    @Override
    public Integer call() throws Exception {
        int sum=0;
        for (int i = 0; i < 100; i++) {
            sum+=i;
        }
        return sum;
    }
}
 
 
三种创建方式的比较:

 
(三).Thread类的常用方法:

(四).线程的生命周期:
想要实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,在他的一个完整的生命周期中通常要经历如下的五种状态:
新建-->就绪-->运行-->阻塞-->死亡.




















