并发编程:Java多线程下的资源争抢示例

原创 港控/mmm° 2024-10-13 13:06 125阅读 0赞

在Java中,多线程主要是通过Thread类或者Runnable接口来创建线程。由于资源有限,多个线程同时运行可能会引发资源争抢的问题。

以下是一个简单的Java多线程资源争抢示例:

  1. // 创建资源对象
  2. Object resource = new Object();
  3. // 创建两个线程,每个线程尝试获取资源
  4. Thread thread1 = new Thread(() -> {
  5. try {
  6. // 获取资源
  7. resource = synchronized(resource) {
  8. System.out.println("Thread 1 got resource at " + new Date());
  9. return resource;
  10. }
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. }));
  15. Thread thread2 = new Thread(() -> {
  16. try {
  17. // 获取资源
  18. resource = synchronized(resource) {
  19. System.out.println("Thread 2 got resource at " + new Date());
  20. return resource;
  21. }
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }));
  26. // 启动线程
  27. thread1.start();
  28. thread2.start();
  29. // 等待所有线程执行完毕
  30. try {
  31. thread1.join();
  32. thread2.join();
  33. } catch (InterruptedException e) {
  34. e.printStackTrace();
  35. }

在这个示例中,我们创建了两个线程,每个线程都尝试获取一个共享的资源对象。由于资源有限,可能会引发线程间的资源争抢。

通过synchronized关键字,我们可以确保在任何时候只有一个线程可以访问这个资源。

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

发表评论

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

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

相关阅读