当前位置:首页 > 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)管理线程,避免频繁创建销毁线程的开销:

java线程 如何实现

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

线程同步

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

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

java线程 如何实现

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()方法请求终止线程,线程需检查中断状态并响应:

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

注意事项

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

分享给朋友:

相关文章

vue如何实现单选

vue如何实现单选

使用原生 HTML 单选按钮 在 Vue 中可以直接使用 HTML 的原生单选按钮,通过 v-model 绑定数据。 <template> <div>…

vue如何实现分离

vue如何实现分离

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

vue如何实现删除

vue如何实现删除

Vue 删除功能的实现方法 在 Vue 中实现删除功能通常涉及以下几个关键步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,为每个项目添加删除按钮。确保数据存储在 Vue 的 data…

vue如何实现直播

vue如何实现直播

Vue 实现直播的方案 Vue 可以通过集成第三方直播 SDK 或原生 WebRTC 技术实现直播功能。以下是几种常见的实现方式: 使用第三方直播 SDK 集成腾讯云、阿里云等提供的直播 SDK,快…

vue如何实现ssr

vue如何实现ssr

Vue 实现 SSR 的基本原理 Vue 的 SSR(Server-Side Rendering)核心思想是将组件在服务器端渲染为 HTML 字符串,直接发送给浏览器,再由客户端激活(Hydratio…

vue如何实现循环

vue如何实现循环

Vue 中实现循环的方法 Vue 提供了 v-for 指令来实现循环渲染,可以遍历数组、对象或数字范围。 遍历数组 <ul> <li v-for="(item, index)…