当前位置:首页 > Java

java线程如何使用

2026-03-03 08:25:12Java

线程的基本概念

在Java中,线程是程序执行的最小单元,多线程允许程序同时执行多个任务。Java通过Thread类和Runnable接口提供线程支持。

创建线程的两种方式

继承Thread类

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("线程运行中");
    }
}

// 使用方式
MyThread thread = new MyThread();
thread.start();

实现Runnable接口

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("线程运行中");
    }
}

// 使用方式
Thread thread = new Thread(new MyRunnable());
thread.start();

线程的生命周期

  • 新建(New):线程对象创建后但未调用start()
  • 就绪(Runnable):调用start()后,等待CPU调度。
  • 运行(Running):线程获取CPU资源执行run()方法。
  • 阻塞(Blocked):线程因等待资源或I/O操作暂停。
  • 终止(Terminated)run()方法执行完毕或异常退出。

线程常用方法

  • start():启动线程。
  • run():定义线程执行的任务。
  • sleep(long millis):暂停线程指定毫秒。
  • join():等待线程终止。
  • interrupt():中断线程。
  • isAlive():检查线程是否存活。

线程同步与锁

多线程共享资源时需同步以避免竞态条件。

synchronized关键字

class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }
}

ReentrantLock

import java.util.concurrent.locks.ReentrantLock;

class Counter {
    private final ReentrantLock lock = new ReentrantLock();
    private int count = 0;

    public void increment() {
        lock.lock();
        try {
            count++;
        } finally {
            lock.unlock();
        }
    }
}

线程池的使用

Java提供ExecutorService管理线程池,避免频繁创建销毁线程。

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -> {
    System.out.println("任务执行");
});
executor.shutdown();

线程间通信

通过wait()notify()notifyAll()实现。

class SharedResource {
    private boolean flag = false;

    public synchronized void waitForFlag() throws InterruptedException {
        while (!flag) {
            wait();
        }
    }

    public synchronized void setFlag() {
        flag = true;
        notifyAll();
    }
}

注意事项

  • 避免死锁:确保锁的获取顺序一致。
  • 减少锁粒度:仅同步必要代码块。
  • 使用线程安全类:如ConcurrentHashMap
  • 避免长时间占用锁:防止其他线程长时间等待。

java线程如何使用

分享给朋友:

相关文章

hashrouter如何使用react

hashrouter如何使用react

使用 HashRouter 在 React 中的方法 安装 react-router-dom 确保项目中已安装 react-router-dom,若未安装,可通过以下命令安装: npm inst…

react如何使用函数

react如何使用函数

使用函数组件的基本语法 在React中,函数组件是通过JavaScript函数定义的组件。函数接收props作为参数,并返回React元素。 function Welcome(props) {…

react激光如何使用

react激光如何使用

安装React激光库 在项目中安装React激光库,通常通过npm或yarn完成。确保项目已初始化并具备React环境。 npm install react-laser-beam # 或 ya…

react如何使用jquery

react如何使用jquery

在 React 中使用 jQuery React 和 jQuery 的设计理念不同,React 基于虚拟 DOM 和数据驱动,而 jQuery 直接操作真实 DOM。若需在 React 中整合 jQu…

react如何使用agora

react如何使用agora

使用 React 集成 Agora 视频通话 SDK 安装 Agora SDK 在 React 项目中安装 Agora RTC SDK: npm install agora-rtc-sdk 初始化…

react如何使用插件

react如何使用插件

使用插件的基本方法 在React项目中使用插件通常涉及安装、导入和集成三个主要环节。以下是具体操作方式: 安装插件通过npm或yarn完成。例如,要安装react-router-dom插件,可以运…