Java 高级教程学习笔记

一、Java 多线程

1. 线程基础概念

Java 线程是一个轻量级进程,可以同时执行多个任务。每个线程都有一个独立的堆栈和程序计数器。

2. 创建线程

Java 线程可以通过继承 Thread 类或实现 Runnable 接口来创建。下面是两种方式的示例代码:

继承 Thread 类

javaCopy Code
public class MyThread extends Thread { public void run() { // 线程执行逻辑 } } MyThread thread = new MyThread(); thread.start();

实现 Runnable 接口

javaCopy Code
public 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 Code
public void synchronized myMethod() { // 同步代码块 }

Lock 接口

Lock 接口提供了更加灵活的锁机制,可以实现更加复杂的同步逻辑。

javaCopy Code
Lock lock = new ReentrantLock(); lock.lock(); try { // 同步代码块 } finally { lock.unlock(); }

二、Java IO

1. IO 流概述

Java IO 流提供了增强的输入输出功能,包括字节流和字符流。字节流用于处理二进制数据,字符流用于处理文本数据。

2. 字节流

字节流支持 InputStream 和 OutputStream 两个抽象类,可以通过 FileInputSteam 和 FileOutputStream 等实现类进行文件读写操作。

javaCopy Code
FileInputStream 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 Code
FileReader 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 的基础知识和使用方法。希望对您有帮助!