1、基本概念
1、程序
是完成特点的任务,用用某种语言编写的一组指令的集合,指一段静态代码,静态对象。
2、进程
是程序的一次执行过程。
3、线程
什么时候需要多线程:
(1)、程序需要通知执行两个或多个任务。
(2)、程序需要实现一些需要等待的任务时,如用户输入、文件读写操作、网络操作、搜索。
(3)、需要一些后台运行的程序时。
多线程的优点:
(1)、提高应用程序的响应。对图形化界面根由意义,可增强用户体验
(2)、提高计算机系统的cpu的利用率
(3)、改善程序结构,将即长有复杂的进程分为多个线程,独立运行,利于理解和修改。
2、线程的创建和使用
多线程创建:
方式一:(通过继承Thread类实现)
1、通过创建继承Thread类的子类,重写run()方法(如果需要多个线程,就创建几个子类(可以创建匿名子类))
2、在run()方法中写出需要同时进行的代码
3、在主线程中创建子类对象
4、调用子类对象继承的Thread类的start()方法执行
方式二:(通过Runnable接口实现)
1、通过创建引用接口的实现类,重写run()方法。
2、在run方法中写出同时进行的代码
3、在主线程中创建实现类
4、再将实现类作为Thread的构造参数传递。
5、在调用Thread类的start()方法执行
方式一与方式二对比:
优先选择方式二。。。
原因:
1、方式一通过继承实现多线程,继承中只能单一继承,而接口可以实现多个,造成功能短缺。
2、实现的方式更适合来处理多个线程所有共享数据的情况
相同点:
方式一和方式二都是通过实现Runnable接口实现的
根据D:\\ 三国志 文本信息 并输出中文
滚滚长江东逝水 ,浪花淘尽英雄:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
String filePath = "D:\\三国志";
try {
FileInputStream fis = new FileInputStream(filePath);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
isr.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码读取指定路径的文本文件(D:\三国志),使用UTF-8编码将其内容转换为中文并逐行输出。