Java中的多线程快速入门

1. 多线程基础概念

多线程允许程序同时执行多个任务,提升效率。在Java中,实现多线程有两种主要方式:

  • 继承Thread类:创建一个类继承Thread类,并重写run()方法
  • 实现Runnable接口:创建一个类实现Runnable接口,并实现run()方法

2. 快速上手示例

下面是一个简单示例,展示两种实现方式:

// 方式1:继承Thread类
class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("MyThread: " + i);
            try {
                Thread.sleep(100); // 暂停100毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

// 方式2:实现Runnable接口
class MyRunnable implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("MyRunnable: " + i);
            try {
                Thread.sleep(150); // 暂停150毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建并启动继承Thread的线程
        MyThread thread1 = new MyThread();
        thread1.start(); // 注意:调用start()而不是run()

        // 创建并启动实现Runnable的线程
        Thread thread2 = new Thread(new MyRunnable());
        thread2.start();

        // 主线程继续执行
        for (int i = 0; i < 5; i++) {
            System.out.println("Main: " + i);
            try {
                Thread.sleep(200); // 暂停200毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

3. 代码解释

关键知识点

  1. Thread类:Java提供的线程基类,通过继承它可以创建自定义线程
  2. Runnable接口:包含一个抽象方法run(),用于定义线程执行的任务
  3. start()方法:启动线程,JVM会调用线程的run()方法
  4. sleep()方法:让当前线程暂停执行指定时间(毫秒)
  5. 主线程:每个Java程序都有一个主线程,即执行main()方法的线程

运行流程

  • 当你运行程序时,会同时有三个线程在执行:thread1thread2和主线程
  • 每个线程按照自己的逻辑独立执行,输出顺序可能因调度而不同
  • sleep()方法用于模拟耗时操作,使输出更易观察

4. 线程同步(进阶)

当多个线程访问共享资源时,可能会出现数据不一致问题。Java提供synchronized关键字解决这个问题:

class Counter {
    private int count = 0;

    // 同步方法,确保同一时间只有一个线程能访问
    public synchronized void increment() {
        count++;
    }

    public int getCount() {
        return count;
    }
}

以上是Java多线程的快速入门。建议进一步学习线程生命周期、线程池、并发工具类等高级主题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值