Java 高级教程学习笔记
一、Java 多线程
1. 线程基础概念
Java 线程是一个轻量级进程,可以同时执行多个任务。每个线程都有一个独立的堆栈和程序计数器。
2. 创建线程
Java 线程可以通过继承 Thread 类或实现 Runnable 接口来创建。下面是两种方式的示例代码:
继承 Thread 类
javaCopy Codepublic class MyThread extends Thread {
public void run() {
// 线程执行逻辑
}
}
MyThread thread = new MyThread();
thread.start();
实现 Runnable 接口
javaCopy Codepublic class MyRunnable implements Runnable {
public void run() {
// 线程执行逻辑
}
}
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
3. 线程同步
多个线程同时访问共享资源时,可能会导致数据不一致等问题。Java 提供了 synchronized 关键字和 Lock 接口等机制来解决线程同步问题。
synchronized 关键字
synchronized 关键字可以修饰方法或代码块,保证同一时间只有一个线程可以访问共享资源。
javaCopy Codepublic void synchronized myMethod() {
// 同步代码块
}
Lock 接口
Lock 接口提供了更加灵活的锁机制,可以实现更加复杂的同步逻辑。
javaCopy CodeLock lock = new ReentrantLock();
lock.lock();
try {
// 同步代码块
} finally {
lock.unlock();
}
二、Java IO
1. IO 流概述
Java IO 流提供了增强的输入输出功能,包括字节流和字符流。字节流用于处理二进制数据,字符流用于处理文本数据。
2. 字节流
字节流支持 InputStream 和 OutputStream 两个抽象类,可以通过 FileInputSteam 和 FileOutputStream 等实现类进行文件读写操作。
javaCopy CodeFileInputStream in = new FileInputStream("input.txt");
FileOutputStream out = new FileOutputStream("output.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
in.close();
out.close();
3. 字符流
字符流支持 Reader 和 Writer 两个抽象类,可以通过 FileReader 和 FileWriter 等实现类进行文件读写操作。
javaCopy CodeFileReader reader = new FileReader("input.txt");
FileWriter writer = new FileWriter("output.txt");
char[] buffer = new char[1024];
int len;
while ((len = reader.read(buffer)) != -1) {
writer.write(buffer, 0, len);
}
reader.close();
writer.close();
以上是 Java 多线程和 Java IO 的基础知识和使用方法。希望对您有帮助!