Java多线程的一些基本例子

简介: 【5月更文挑战第17天】Java多线程允许并发执行任务。示例1展示创建并启动两个`MyThread`对象,各自独立打印"Hello World"。示例2的`CounterExample`中,两个线程(IncrementThread和DecrementThread)同步地增加和减少共享计数器,确保最终计数为零。这些例子展示了Java线程的基本用法,包括线程同步,还有如Executor框架和线程池等更复杂的用例。

Java中的多线程是一种能够在同一应用程序中执行多个并发任务的方法。以下是几个Java多线程使用的案例:

  1. 经典的“打印Hello World”例子:
class MyThread extends Thread {
   
    public void run() {
   
        for (int i = 0; i < 5; i++) {
   
            System.out.println("Hello World " + i);
        }
    }
}

public class TestThread {
   
    public static void main(String args[]) {
   
        MyThread t1 = new MyThread();
        MyThread t2 = new MyThread();

        t1.start();
        t2.start();
    }
}

在这个例子中,我们创建了两个MyThread类的对象t1和t2,并且分别调用了它们的start()方法来启动这两个线程。每个线程都会在一个独立的执行环境中运行,打印出“Hello World”。

  1. 线程同步的例子:
public class CounterExample {
   
    private int count = 0;

    class IncrementThread extends Thread {
   
        @Override
        public void run() {
   
            for (int i = 0; i < 50000; i++) {
   
                increment();
            }
        }
    }

    class DecrementThread extends Thread {
   
        @Override
        public void run() {
   
            for (int i = 0; i < 50000; i++) {
   
                decrement();
            }
        }
    }

    synchronized void increment() {
   
        count++;
    }

    synchronized void decrement() {
   
        count--;
    }

    public static void main(String[] args) throws InterruptedException {
   
        CounterExample example = new CounterExample();
        Thread incThread = example.new IncrementThread();
        Thread decThread = example.new DecrementThread();
        incThread.start();
        decThread.start();
        incThread.join();
        decThread.join();
        System.out.println(example.count);
    }
}

在这个例子中,我们创建了一个CounterExample类,其中包含两个内部类IncrementThread和DecrementThread,分别代表两个线程。increment()和decrement()方法是线程同步的,这意味着任何时候只有一个线程可以访问它们。因此,在这个例子中,计数器的值应该最终为零。
这些只是Java多线程的一些基本例子,实际上还有很多其他的用例,例如使用Executor框架,使用线程池等等。

相关文章
|
4天前
|
缓存 NoSQL Java
Java高并发实战:利用线程池和Redis实现高效数据入库
Java高并发实战:利用线程池和Redis实现高效数据入库
20 0
|
1天前
|
数据采集 安全 算法
Java并发编程中的线程安全与性能优化
在Java编程中,多线程并发是提升程序性能的关键之一。本文将深入探讨Java中的线程安全性问题及其解决方案,并介绍如何通过性能优化技术提升多线程程序的效率。
9 3
|
1天前
|
Java 调度
【Java基础】 多线程
Java、多线程编程
11 0
|
2天前
|
Java 调度
【Java基础】 线程状态转化
Java线程状态转化
15 2
|
4天前
|
监控 Java API
Java 程序设计 第八章 线程
Java 程序设计 第八章 线程
|
4天前
|
存储 安全 Java
Java多线程编程--JUC
Java多线程编程
|
5天前
|
Java API
详细探究Java多线程的线程状态变化
Java多线程的线程状态主要有六种:新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、超时等待(TIMED_WAITING)和终止(TERMINATED)。线程创建后处于NEW状态,调用start()后进入RUNNABLE状态,表示准备好运行。当线程获得CPU资源,开始执行run()方法时,它处于运行状态。线程可以因等待锁或调用sleep()等方法进入BLOCKED或等待状态。线程完成任务或发生异常后,会进入TERMINATED状态。
|
5天前
|
存储 安全 Java
Java多线程中线程安全问题
Java多线程中的线程安全问题主要涉及多线程环境下对共享资源的访问可能导致的数据损坏或不一致。线程安全的核心在于确保在多线程调度顺序不确定的情况下,代码的执行结果始终正确。常见原因包括线程调度随机性、共享数据修改以及原子性问题。解决线程安全问题通常需要采用同步机制,如使用synchronized关键字或Lock接口,以确保同一时间只有一个线程能够访问特定资源,从而保持数据的一致性和正确性。
|
5天前
|
监控 安全 Java
Java多线程的使用
Java多线程允许程序同时执行多个任务,提高了系统的整体性能和响应速度。通过创建Thread类或其子类的实例,或使用Runnable接口,Java开发者可以定义并发执行的代码段。多线程在处理复杂任务、资源共享、网络通信等方面具有显著优势,但也需要注意线程安全、同步和死锁等问题。Java提供了丰富的API和工具来处理这些并发问题,使多线程编程更加高效和可靠。
|
5天前
|
API
java-多线程-CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量)-
java-多线程-CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量)-
10 1