21xrx.com
2024-12-27 06:32:06 Friday
登录
文章检索 我的文章 写文章
Java 多线程示例题
2023-07-04 20:40:56 深夜i     --     --
Java 多线程 示例题 程序设计 线程安全

Java是非常流行的编程语言,应用非常广泛,其中一个非常重要的功能就是多线程。Java的多线程让程序能并发执行,提高了效率。下面让我们看一道Java多线程的示例题。

题目:

通过两个线程交替打印1-10的数字,如线程一打印1,线程二打印2,再线程一打印3,以此类推,直到10。

解析:

这个问题应该怎么解决呢?我们可以创建两个线程Thread1和Thread2,然后让这两个线程交替运行,打印输出数字。我们可以通过共享变量的方式来实现线程间的通信。当某个线程输出结束后,它需要执行等待操作(wait),然后唤醒另一个线程(notify)再继续执行。

代码实现如下:

import java.util.concurrent.locks.Lock;

import java.util.concurrent.locks.Condition;

import java.util.concurrent.locks.ReentrantLock;

public class TestThread {

  public static void main(String[] args) {

    final Lock lock = new ReentrantLock();

    final Condition condition = lock.newCondition();

    Thread1 thread1 = new Thread1(lock, condition);

    Thread2 thread2 = new Thread2(lock, condition);

    thread1.start();

    thread2.start();

  }

}

class Thread1 extends Thread {

  private Lock lock;

  private Condition condition;

  private int count = 1;

  public Thread1(Lock lock, Condition condition)

    this.lock = lock;

    this.condition = condition;

  @Override

  public void run() {

    while (count <= 10) {

      try {

        lock.lock();

        System.out.println("Thread1: " + count++);

        condition.signal();

        condition.await();

      } catch (InterruptedException e) {

        e.printStackTrace();

      } finally {

        lock.unlock();

      }

    }

  }

}

class Thread2 extends Thread {

  private Lock lock;

  private Condition condition;

  private int count = 2;

  public Thread2(Lock lock, Condition condition)

    this.lock = lock;

    this.condition = condition;

  @Override

  public void run() {

    while (count <= 10) {

      try {

        lock.lock();

        System.out.println("Thread2: " + count++);

        condition.signal();

        condition.await();

      } catch (InterruptedException e) {

        e.printStackTrace();

      } finally {

        lock.unlock();

      }

    }

  }

}

在上面的代码中,我们使用了Java的锁机制(lock)和条件变量(condition),来实现线程间的协作。在Thread1中,不断地执行一下操作:

1. 使用lock对象锁住共享变量。

2. 打印输出count变量的值,同时将其加1。

3. 通过condition对象唤醒另一个线程,然后执行等待(await)操作。

4. 最后释放lock对象。

Thread2中的操作也是类似的,唯一的不同是count变量的初值是2。这样两个线程就可以交替执行,输出1-10的数字了。

总结:

Java多线程是编程中非常重要的内容,它可以让程序并发执行,提高效率,在计算机应用中被广泛使用。本文介绍了一个Java多线程的示例题,通过这个题目的分析,我们不仅可以掌握Java的锁机制和条件变量,还能够了解Java多线程的运行机制和编程技巧。希望本文能够对大家有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复