多线程同步问题:Java应用示例

原创 短命女 2024-10-18 10:36 123阅读 0赞

在Java中,多线程同步主要是通过各种锁(如synchronized关键字、ReentrantLock等)和并发工具类(如CountDownLatch、Semaphore等)来实现的。

以下是一个简单的Java多线程同步示例,使用了synchronized关键字:

  1. public class Counter {
  2. private int count = 0;
  3. public synchronized void increment() {
  4. count++;
  5. }
  6. public synchronized int value() {
  7. return count;
  8. }
  9. }
  10. // 示例:两个线程交替增加计数器
  11. public class Main {
  12. public static void main(String[] args) {
  13. Counter counter = new Counter();
  14. Thread thread1 = new Thread(() -> {
  15. for (int i = 0; i < 5; i++) {
  16. counter.increment();
  17. try {
  18. // 控制线程等待,模拟资源限制
  19. Thread.sleep(100);
  20. } catch (InterruptedException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. }));
  25. Thread thread2 = new Thread(() -> {
  26. for (int i = 5; i < 10; i++) {
  27. counter.increment();
  28. try {
  29. // 控制线程等待,模拟资源限制
  30. Thread.sleep(100);
  31. } catch (InterruptedException e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. }));
  36. thread1.start();
  37. thread2.start();
  38. // 等待两个线程执行完毕
  39. thread1.join();
  40. thread2.join();
  41. System.out.println("Final count: " + counter.value());
  42. }
  43. }

在这个示例中,我们创建了一个Counter类,并使用synchronized关键字来确保在任何时候只有一个线程可以访问increment()value()方法。这样就实现了多线程的同步。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,123人围观)

还没有评论,来说两句吧...

相关阅读