1、继承Thread类:
创建一个类,继承自Thread类,并重写其run()方法,在run()方法中定义线程要执行的任务。然后创建该类的实例,并调用start()方法启动线程。
class MyThread extends Thread {
public void run() {
// 线程要执行的任务
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // 启动线程
}
}
2、实现Runnable接口:
- 创建一个类,实现Runnable接口,并实现其run()方法。然后创建Thread对象,将该Runnable对象作为参数传递给Thread的构造函数,并调用start()方法启动线程
class MyRunnable implements Runnable { public void run() { // 线程要执行的任务 } } public class Main { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start(); // 启动线程 } }
Java中的多线程编程涉及到一些重要的概念和技术,包括:
-
线程生命周期:线程从创建到销毁的整个过程,包括新建状态、就绪状态、运行状态、阻塞状态和终止状态。
-
线程同步:多个线程访问共享资源时,需要进行同步操作,以避免出现数据不一致或竞态条件等问题。Java提供了synchronized关键字、ReentrantLock等机制来实现线程同步。
-
线程通信:多个线程之间需要进行通信,以协调彼此的工作。Java提供了wait()、notify()、notifyAll()等方法来实现线程间的通信。
-
线程池:为了避免频繁地创建和销毁线程造成的性能开销,可以使用线程池来管理线程。Java提供了Executors工具类和ThreadPoolExecutor类来实现线程池。
-
线程安全性:在多线程环境下,需要保证程序的线程安全性,即多个线程同时访问某个共享资源时不会出现数据错误或不一致的情况。可以通过同步机制来保证线程安全性。