javadoc文档中的LockSupport

public class LockSupport
extends Object
 

用来创建锁和其他同步类的基本线程阻塞原语。

此类以及每个使用它的线程与一个许可关联(从 Semaphore 类的意义上说)。如果该许可可用,并且可在进程中使用,则调用 park 将立即返回;否则可能 阻塞。如果许可尚不可用,则可以调用 unpark 使其可用。(但与 Semaphore 不同的是,许可不能累积,并且最多只能有一个许可。)

parkunpark 方法提供了阻塞和解除阻塞线程的有效方法,并且不会遇到导致过时方法 Thread.suspendThread.resume 因为以下目的变得不可用的问题:由于许可的存在,调用 park 的线程和另一个试图将其 unpark 的线程之间的竞争将保持活性。此外,如果调用者线程被中断,并且支持超时,则 park 将返回。park 方法还可以在其他任何时间“毫无理由”地返回,因此通常必须在重新检查返回条件的循环里调用此方法。从这个意义上说,park 是“忙碌等待”的一种优化,它不会浪费这么多的时间进行自旋,但是必须将它与 unpark 配对使用才更高效。

三种形式的 park 还各自支持一个 blocker 对象参数。此对象在线程受阻塞时被记录,以允许监视工具和诊断工具确定线程受阻塞的原因。(这样的工具可以使用方法 getBlocker(java.lang.Thread) 访问 blocker。)建议最好使用这些形式,而不是不带此参数的原始形式。在锁实现中提供的作为 blocker 的普通参数是 this

这些方法被设计用来作为创建高级同步实用工具的工具,对于大多数并发控制应用程序而言,它们本身并不是很有用。park 方法仅设计用于以下形式的构造:

while (!canProceed()) { ... LockSupport.park(this); }
在这里,在调用 park 之前, canProceed 和其他任何动作都不会锁定或阻塞。因为每个线程只与一个许可关联, park 的任何中间使用都可能干扰其预期效果。

示例用法。 以下是一个先进先出 (first-in-first-out) 非重入锁类的框架。

class FIFOMutex {
   private final AtomicBoolean locked = new AtomicBoolean(false);
   private final Queue<Thread> waiters
     = new ConcurrentLinkedQueue<Thread>();

   public void lock() {
     boolean wasInterrupted = false;
     Thread current = Thread.currentThread();
     waiters.add(current);

     // Block while not first in queue or cannot acquire lock
     while (waiters.peek() != current ||
            !locked.compareAndSet(false, true)) {
        LockSupport.park(this);
        if (Thread.interrupted()) // ignore interrupts while waiting
          wasInterrupted = true;
     }

     waiters.remove();
     if (wasInterrupted)          // reassert interrupt status on exit
        current.interrupt();
   }

   public void unlock() {
     locked.set(false);
     LockSupport.unpark(waiters.peek());
   }
 }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 打开Eclipse,选择要生成Javadoc的项目。 2. 右键单击项目,选择“Export”。 3. 在“Export”对话框,选择“Java”>“Javadoc”。 4. 在“Javadoc”对话框,选择要生成文档的源代码文件和包。 5. 在“Javadoc”对话框,选择要生成文档的输出目录和文档标题。 6. 点击“Finish”按钮,开始生成Javadoc文档。 7. 生成完成后,在输出目录查看生成的文档。 ### 回答2: Eclipse是一款常用的Java集成开发环境,通过Eclipse可以生成Javadoc文档Javadoc是一种Java文档注释描述语言,可以从源代码提取注释来生成API文档Javadoc可以让开发者更好地理解代码,同时也可以为API用户提供详细的接口信息和说明。 下面是在Eclipse生成Javadoc文档的步骤: 1. 选择需要生成Javadoc文档的Java项目或者Java文件,右键点击选择“Export”菜单。 2. 在弹出的“Export”对话框,选择“Java”下的“Javadoc”项,然后点击“Next”按钮。 3. 选择需要生成Javadoc文档的源代码和Javadoc选项,然后点击“Next”按钮。 4. 设置Javadoc生成文档的输出目录,然后点击“Finish”完成设置。 5. Eclipse将开始生成Javadoc文档,这个过程可能需要较长时间,生成过程的进度条会实时更新。 6. 文档生成完成后可以在文档输出目录查看和使用生成的Javadoc文档。 值得注意的是,为了让Javadoc注释正确生成,请确保在编写Java代码时,正确地使用Javadoc注释描述API,这样才能为用户提供清晰、准确的API文档。 总之,通过Eclipse生成Javadoc文档是非常方便的,只需要按照上述步骤进行操作即可。同时,正确地编写Javadoc注释,能够为项目的开发和使用带来极大的便利。 ### 回答3: Eclipse是一款非常强大的IDE,针对Java开发非常友好,其包括生成javadoc文档。Eclipse可以通过非常简单的步骤来生成javadoc文档。 首先,需要在Eclipse的Java项目选择一个类或者一个包,然后右键单击,选择“Export”,然后选择“Java”的“Javadoc”选项,并单击“下一步”。 接下来,选择要导出文档的项,可以是整个项目,也可以是某个包,然后设置要生成文档的位置和格式。在此步骤,您可以指定文档的输出格式和所需的选项。您可以选择生成HTML文件、PDF文件、RTF文件或其他文档格式。 接下来,您可以执行高级设置,包括指定文档的样式和设置选项。这包括指定标题、作者、版本等信息,以及是否生成文档索引和导航。 最后,单击“完成”以生成文档。 如果您要在Eclipse轻松生成javadoc文档,可以使用非常简单的步骤,然后在导出文档之前进行一些高级设置。这将帮助您生成自己的文档库,并使您的代码更加清晰和组织。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值