一.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//子级路径:FileString 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{@Overridepublic 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{@Overridepublic 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 {@Overridepublic Integer call() throws Exception {int sum=0;for (int i = 0; i < 100; i++) {sum+=i;}return sum;}
}
三种创建方式的比较:
(三).Thread类的常用方法:
(四).线程的生命周期:
想要实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,在他的一个完整的生命周期中通常要经历如下的五种状态:
新建-->就绪-->运行-->阻塞-->死亡.