当前位置: 首页 > 面试题库 >

同步的目的是什么?

法烨华
2023-03-14
问题内容

这里的同步点是什么?

为什么不只是使用mConnectedThread.write(out)

该代码段来自Android的BluetoothChat示例(在此处找到)

    /**
 * Write to the ConnectedThread in an unsynchronized manner
 * @param out The bytes to write
 * @see ConnectedThread#write(byte[])
 */
public void write(byte[] out) {
    // Create temporary object
    ConnectedThread r;
    // Synchronize a copy of the ConnectedThread
    synchronized (this) {
        if (mState != STATE_CONNECTED) return;
        r = mConnectedThread;
    }
    // Perform the write unsynchronized
    r.write(out);
}

问题答案:

需要进行同步以确保您没有不一致的状态。

没有同步,代码将是:

public void write(byte[] out) {
    if (mState != STATE_CONNECTED) return;
    mConnectedThread.write(out);
}

现在,如果在mConnectedThread执行方法调用之前将if语句检查和方法调用之间的连接从何处关闭,则可以将其分配为null。这将导致NullPointerException



 类似资料:
  • 问题内容: 我知道 同步代码块时,可以指定要将哪个对象的锁用作锁,例如,可以将某些第三方对象用作此代码段的锁。这样一来,您就可以在一个对象中拥有多个锁来进行代码同步。 但是,我不明白需要将参数传递给该块。因为我是否传递String的实例都没有关系,所以某些随机类的实例作为同步块可以完美地工作,而与传递给该块的参数无关。 所以我的问题是 ,无论如何,同步块是否阻止两个线程同时进入关键部分。 那为什么

  • 我知道 当您同步一个代码块时,您可以指定要使用哪个对象的锁作为锁,这样,例如,您可以使用某个第三方对象作为这段代码的锁。这使您能够在单个对象中拥有多个用于代码同步的锁。 但是,我不明白是否需要将参数传递给块。因为我是否传递String的实例并不重要,一些随机类的实例传递给同步块,因为同步块可以完美地工作,而不管传递给块的参数如何。 所以我的问题是,如果无论如何同步块阻止两个线程同时进入关键部分。那

  • 问题内容: 我正在阅读“ RESTful Java with JAX-RS 2.0”一书。我对异步JAX- RS完全感到困惑,因此我将所有问题合而为一。本书是这样写异步服务器的: Netbeans创建异步服务器,如下所示: 那些不创建后台线程的对象使用某些锁定方法来存储响应对象以进行进一步处理。此示例用于向客户发送股票报价: 对象将与某些后台作业共享,并在准备就绪时将报价发送给所有客户端。 我的问

  • 问题内容: Prevayler保证所有写入(通过其事务)都是同步的。但是读呢? 如果不使用显式同步(在用户代码中),可以进行脏读吗? 如果将业务对象读取为: ? 如果是这样,哪种同步策略对用户代码有利? (考虑业务对象A包含业务对象Bs的集合), 使用同步集合(A中B的集合),例如从java.util.concurrent包中? 同步外部事务的集合读取与内部事务的集合写入,例如在读写之间使用“ s

  • 我刚刚发现,在react函数都是异步的,或者在调用它的函数完成后调用。 现在这两样东西很难消化 在博客中,函数是在函数内部调用的,但是触发函数的原因并不是被调用函数所知道的。 他们为什么要让异步,因为JS是单线程语言,而且这个setState不是WebAPI或服务器调用,所以只能在JS的线程上完成。他们这样做是为了使重新呈现不会停止所有事件侦听器和其他东西,还是有其他设计问题。

  • 问题内容: xxx xxx com.xxx.yyy true servlet的web.xml配置文件的目的是什么?我可以在什么情况下使用它? 问题答案: 具有讽刺意味的是,我一直在寻找如何在tomcat的web.xml中写入此属性的语法,这是我从google打开的第一个搜索项目- 它也写得正确(有效),所以谢谢。 为了回答您的问题,这允许servlet存储传入的请求以供以后响应。它释放了用于处理请