请展示一个Java多线程的例子,以及同步工具的使用。

原创 怼烎@ 2025-03-23 20:42 8阅读 0赞

以下是一个简单的Java多线程例子,其中使用了synchronized关键字来保证数据的安全。

  1. // 创建两个共享变量
  2. public class Counter {
  3. private int count = 0;
  4. // 定义一个公共方法,允许其他线程访问和修改count
  5. public synchronized void increment() {
  6. count++;
  7. }
  8. // 获取当前的计数
  9. public synchronized int getCount() {
  10. return count;
  11. }
  12. }
  13. // 创建两个线程,分别增加计数器的值
  14. public class MultiThreadExample {
  15. public static void main(String[] args) {
  16. Counter counter = new Counter();
  17. // 创建并启动第一个线程
  18. Thread thread1 = new Thread(() -> {
  19. for (int i = 0; i < 10; i++) {
  20. counter.increment();
  21. try {
  22. // 模拟耗时操作
  23. Thread.sleep(50);
  24. } catch (InterruptedException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }));
  29. // 创建并启动第二个线程
  30. Thread thread2 = new Thread(() -> {
  31. for (int i = 0; i < 10; i++) {
  32. counter.increment();
  33. try {
  34. // 模拟耗时操作
  35. Thread.sleep(50);
  36. } catch (InterruptedException e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. }));
  41. // 启动两个线程
  42. thread1.start();
  43. thread2.start();
  44. // 线程执行完毕后,打印出计数器的值
  45. try {
  46. thread1.join();
  47. thread2.join();
  48. System.out.println("Counter value: " + counter.getCount());
  49. } catch (InterruptedException e) {
  50. e.printStackTrace();
  51. }
  52. }
  53. }

在这个例子中,我们创建了一个Counter类,它有两个共享变量:countincrementCount方法。然后我们创建了两个线程,分别调用这两个方法来增加计数器的值。

由于increment方法被synchronized修饰,所以多个线程可以同时访问这个方法,但不会导致数据的不一致。

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

发表评论

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

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

相关阅读