当前位置:首页 > Java

java线程 如何实现

2026-03-21 03:53:57Java

线程创建方式

Java中实现线程主要有两种方式:继承Thread类或实现Runnable接口。

继承Thread类
通过继承Thread类并重写run()方法定义线程逻辑:

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Thread running by extending Thread");
    }
}

// 启动线程
MyThread thread = new MyThread();
thread.start();

实现Runnable接口
通过实现Runnable接口并实现run()方法,再将实例传递给Thread对象:

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Thread running by implementing Runnable");
    }
}

// 启动线程
Thread thread = new Thread(new MyRunnable());
thread.start();

线程池管理

推荐使用线程池(如ExecutorService)管理线程,避免频繁创建销毁线程的开销:

ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -> {
    System.out.println("Task executed by thread pool");
});
executor.shutdown();

线程同步

多线程共享资源时需使用同步机制:

synchronized关键字
修饰方法或代码块,确保同一时间只有一个线程访问资源:

class Counter {
    private int count = 0;

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

Lock接口
通过ReentrantLock实现更灵活的同步控制:

Lock lock = new ReentrantLock();
lock.lock();
try {
    // 临界区代码
} finally {
    lock.unlock();
}

线程通信

使用wait()notify()Condition实现线程间协作:

class SharedResource {
    private boolean flag = false;

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

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

线程中断

通过interrupt()方法请求终止线程,线程需检查中断状态并响应:

java线程 如何实现

Thread thread = new Thread(() -> {
    while (!Thread.currentThread().isInterrupted()) {
        // 执行任务
    }
});
thread.start();
thread.interrupt();

注意事项

  • 避免直接调用run()方法,需通过start()启动线程。
  • 优先选择Runnable接口,避免单继承限制。
  • 使用线程池时注意合理配置核心线程数和队列容量。
  • 同步代码块应尽量缩小范围,减少性能影响。

分享给朋友:

相关文章

vue如何实现注册

vue如何实现注册

实现用户注册功能 在Vue中实现注册功能通常需要结合前端表单和后端API交互。以下是完整的实现方案: 创建注册表单组件 注册表单需要包含用户名、邮箱、密码等基本字段,并进行表单验证: <te…

vue如何实现增删

vue如何实现增删

使用 Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是具体实现方法: 数据定义与初始化 在 Vue 组件的 data 选项中定义数组来存储需要操作的数据项…

java如何实现多态

java如何实现多态

多态的概念 多态是面向对象编程的三大特性之一(封装、继承、多态),指同一操作作用于不同对象时,可以产生不同的行为。Java中主要通过方法重写(Override)和接口/抽象类实现多态。 实现…

vue如何实现分离

vue如何实现分离

Vue 实现代码分离的方法 Vue 提供了多种方式实现代码分离,提升项目的可维护性和模块化程度。以下是常见的几种方法: 组件化开发 将功能拆分为独立的 Vue 组件,每个组件包含自己的模板、逻辑和样…

vue如何实现ifream

vue如何实现ifream

Vue 中实现 iframe 的方法 在 Vue 中可以通过多种方式实现 iframe 的嵌入和控制。以下是几种常见的方法: 使用 HTML 原生 iframe 标签 在 Vue 模板中直接使用…

如何在java中实现线程

如何在java中实现线程

实现线程的两种主要方法 在Java中实现线程有两种主要方法:继承Thread类和实现Runnable接口。两种方法各有优缺点,适用于不同场景。 继承Thread类 通过继承Thread类并重写run…