Java多线程程序-多个任务

简介

多线程是指在一个程序中同时执行多个任务的能力。在Java中,通过线程可以实现并发处理,提高程序的性能和响应速度。本文将介绍Java多线程程序中多个任务的概念和实现方法。

多个任务的概念

在多线程程序中,多个任务是指同时进行的多个独立的工作单元。每个任务可以是一个独立的业务逻辑,它们可以并发地执行,互不干扰。多个任务的并行执行可以提高程序的执行效率,特别是在处理需要耗时等待的任务时,可以避免程序的阻塞。

多个任务的实现方法

在Java中,有多种方式可以实现多个任务的并发执行,常用的有继承Thread类和实现Runnable接口两种方式。

继承Thread类

继承Thread类是实现多线程的一种常见方式。下面是一个简单的示例代码:

public class MyThread extends Thread {
    public void run() {
        // 执行任务的代码
    }
}

// 在主线程中创建并启动多个任务线程
public class Main {
    public static void main(String[] args) {
        MyThread thread1 = new MyThread();
        MyThread thread2 = new MyThread();
        
        thread1.start();
        thread2.start();
    }
}

实现Runnable接口

实现Runnable接口是另一种实现多线程的方式。下面是一个示例代码:

public class MyRunnable implements Runnable {
    public void run() {
        // 执行任务的代码
    }
}

// 在主线程中创建并启动多个任务线程
public class Main {
    public static void main(String[] args) {
        MyRunnable runnable1 = new MyRunnable();
        MyRunnable runnable2 = new MyRunnable();
        
        Thread thread1 = new Thread(runnable1);
        Thread thread2 = new Thread(runnable2);
        
        thread1.start();
        thread2.start();
    }
}

多个任务的协调

在多线程程序中,多个任务之间可能需要相互协调、通信和同步。Java提供了多种方式来实现多个任务之间的协调。

线程间通信

通过共享变量和对象的方法,可以实现多个线程之间的通信。下面是一个简单的示例代码:

public class MyThread extends Thread {
    private String message;
    
    public void run() {
        // 执行任务的代码
        synchronized (this) {
            try {
                wait(); // 线程等待
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println(message); // 打印消息
    }
    
    public void setMessage(String message) {
        this.message = message;
    }
}

// 在主线程中创建并启动多个任务线程
public class Main {
    public static void main(String[] args) {
        MyThread thread1 = new MyThread();
        MyThread thread2 = new MyThread();
        
        thread1.start();
        thread2.start();
        
        thread1.setMessage("Hello");
        thread2.setMessage("World");
        
        synchronized (thread1) {
            thread1.notify(); // 唤醒线程1
        }
        
        synchronized (thread2) {
            thread2.notify(); // 唤醒线程2
        }
    }
}

互斥锁

互斥锁是一种用于多线程并发控制的机制。通过互斥锁,可以实现多个任务之间的互斥访问共享资源。Java中的互斥锁可以通过synchronized关键字来实现。下面是一个示例代码:

public class MyThread extends Thread {
    private static int count = 0;
    
    public void run() {
        synchronized (MyThread.class) {
            for (int i = 0; i < 100; i++) {
                count++;
            }
        }
    }
}

// 在主线程中创建并启动多个任务线程
public class Main {
    public static void main(String[] args) {
        MyThread thread1 = new MyThread();
        MyThread thread2 = new MyThread();
        
        thread1.start();
        thread2.start();
        
        try {
            thread1.join(); // 等待线程1执行完毕
            thread2.join