javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

java-LinkedBlockingQueue的insert和remove方法线程安全吗?

我在两个不同的线程之间使用了add。 一个线程通过take添加数据,而另一个线程通过LinkedBlockingQueue接收数据。

我的问题是,我是否需要同步对add和2702441029218868861的访问。2702441029218868862的插入和删除方法线程安全吗?

trans by 2020-01-14T15:29:07Z

Android:如何获取模式对话框或类似的模式行为?

这些天,我正在模拟Android中的模式对话框。 我已经在Google上搜索了很多,讨论很多,但是遗憾的是没有太多的选择可以使它成为模态。 这是一些背景
对话框,模态对话框和阻止
对话框/ AlertDialogs:如何在对话框启动时“阻止执行”(.NET样式)

没有获得模态行为的直接方法,然后我想出了3种可能的解决方案,
1.使用一个以对话框为主题的活动,就像该线程所说的那样,但是我仍然不能使主要活动真正等待对话活动返回。 主要活动变为停止状态,然后重新启动。
2.构建一个工作线程,然后使用线程同步。 但是,这对于我的应用程序来说是一项巨大的重构工作,现在我在主UI线程中只有一个主要活动和一项服务。
3.当出现模式对话框时,在循环内接管事件处理,并在对话框关闭时退出循环。 实际上,这是构建真实的模态对话框的方式,就像在Windows中一样。 我还没有这种原型。

我仍然想以对话为主题的活动来模拟它,
1.通过startActivityForResult()启动对话活动
2.从onActivityResult()获取结果
这是一些资料

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    MyView v = new MyView(this);
    setContentView(v);
}

private final int RESULT_CODE_ALERT = 1;
private boolean mAlertResult = false;
public boolean startAlertDialog() {
    Intent it = new Intent(this, DialogActivity.class);
    it.putExtra("AlertInfo", "This is an alert");
    startActivityForResult(it, RESULT_CODE_ALERT);

    // I want to wait right here
    return mAlertResult;
}

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case RESULT_CODE_ALERT:
        Bundle ret = data.getExtras();
        mAlertResult = ret.getBoolean("AlertResult");
        break;
    }
}
}

startAlertDialog的调用者将阻止执行并期望返回结果。 但是,当然,startAlertDialog立即返回,并且在DialogActivity启动时,主活动进入STOP状态。

所以问题是,如何使主要活动真正地等待结果?
谢谢。

trans by 2020-01-07T20:21:31Z

为什么同步块比同步方法更好?

我已经开始学习线程同步。

同步方法:

public class Counter {

   private static int count = 0;

   public static synchronized int getCount() {
      return count;
   }

   public synchronized setCount(int count) {
      this.count = count;
   }

}

同步块:

public class Singleton {

   private static volatile Singleton _instance;

   public static Singleton getInstance() {
      if (_instance == null) {
         synchronized(Singleton.class) {
            if (_instance == null)
               _instance = new Singleton();
         }
      }
      return _instance;
   }
}

何时应使用synchronized方法和synchronized块?

为什么synchronized块优于synchronized方法?

trans by 2020-01-01T02:23:03Z

如何将Android数据库与在线SQL Server同步?

我正在开发一个Android应用程序,该应用程序在Android平台提供的内置SQLite中存储不同类型的数据。

在应用程序内部,我放置了一个“同步”按钮,该按钮应该用于在本地SQLite数据库与服务器上的在线SQL Server数据库之间同步数据。

解决此问题的解决方法是什么? 可以在Google日历中找到此功能,您可以在其中查看移动设备上日历的事件,并且在添加新事件并同步数据时,也可以通过访问在线帐户来查看更新的数据。

注意:我不想在线集中数据库,因为我还想让移动用户无需互联网即可使用该应用程序。

trans by 2019-12-31T14:57:04Z

bash-如何保持两个文件夹自动同步?

我想要一个文件夹及其所有子树的同步副本。

它应该以这种方式自动工作:每当我从原始文件夹中创建,修改或删除内容时,这些更改都应自动应用于同步文件夹。

哪个是完成此任务的最佳方法?

顺便说一句:我在Ubuntu 12.04上

最终目标是拥有单独的实时备份副本,而无需使用符号链接或安装。我使用Ubuntu One在计算机之间同步数据,过了一会儿出现问题,并且在同步期间所有数据都丢失了。

因此,我想进一步采取措施来保留数据的备份副本:

  • 我将数据存储在“文件夹A”中
  • 我需要我当前问题的答案,才能创建“文件夹A”到“文件夹B”的单向同步(cron脚本与rsync可以吗?)。 我需要它只能是从A到B的单向方式,对B的任何更改都不能应用于A。
  • 我只是保持与Ubuntu One同步的“文件夹B”

    以这种方式,A中的任何更改都将应用于B,这将从U1中检测到并同步到云。 如果出现任何问题,并且U1删除了B上的数据,我总是将它们放在A上。

受lanzz的评论启发,另一个想法可能是在启动时运行rsync来备份Ubuntu One下的文件夹内容,并仅在rsync完成后才启动Ubuntu One。

您对此有何看法?如何知道rsync何时结束?

trans by 2019-10-25T00:29:18Z

如何在Android上使用Git?

我有一个使用git进行同步的桌面应用程序。 我还有一个Android应用程序,其功能与桌面相同,但我不知道如何在其上进行同步。 我尚未在android上找到git的任何实现。 我找到了一个jgit,但是它的文档记录不完整,我什至无法对此进行提交。

我当时在考虑从我的android应用程序向我的git服务器发送远程命令,但这对我来说真的很有趣。你能告诉我是否有其他可以在android上使用的git实现? 如果您有解决办法的任何想法,请告诉我。

trans by 2019-09-28T20:31:57Z

同步 - Java synchronized块与Collections.synchronizedMap

以下代码是否设置为正确同步addToMap()上的呼叫?

public class MyClass {
  private static Map<String, List<String>> synchronizedMap = Collections.synchronizedMap(new HashMap<String, List<String>>());

  public void doWork(String key) {
    List<String> values = null;
    while ((values = synchronizedMap.remove(key)) != null) {
      //do something with values
    }
  }

  public static void addToMap(String key, String value) {
    synchronized (synchronizedMap) {
      if (synchronizedMap.containsKey(key)) {
        synchronizedMap.get(key).add(value);
      }
      else {
        List<String> valuesList = new ArrayList<String>();
        valuesList.add(value);
        synchronizedMap.put(key, valuesList);
      }
    }
  }
}

根据我的理解,我需要addToMap()中的同步块,以防止另一个线程在通过put()的调用之前调用remove()containsKey(),但我不需要doWork()中的同步块,因为另一个线程无法在addToMap()之前进入同步块remove() 返回,因为我最初使用Collections.synchronizedMap()创建了Map。这是正确的吗? 有一个更好的方法吗?

trans by 2019-09-18T06:10:20Z

多线程 - 条件变量与Semaph

什么时候应该使用信号量,什么时候应该使用条件变量(CondVar)?

trans by 2019-09-12T04:12:39Z

同步 - Vagrant中的符号链接和同步文件夹

我想使用Vagrant为我的团队提供一个共同的开发环境。 主机完全不同:

  • 有些使用OS X,有些Linux和一些Windows。
  • 有些使用VMware,有些使用VirtualBox。

在VM内部我们想要运行Linux。

到目前为止,一切都很好。

现在我们的想法是每个开发人员都应该能够使用他们选择的IDE,因此我们引入了一个同步文件夹,该文件夹共享主机和VM之间的源代码。 这基本上也适用......除了符号链接。

在我们的源代码中,我们实际上有一些符号链接,这在VM内部的Linux中不是问题,但在Windows上作为主机,这会导致问题。 我们唯一不能做的就是摆脱符号链接,所以我们需要另一种方法来解决这个问题。

到目前为止,我们尝试了许多选择:

  • 在Vagrant问题中提到了一种解决方法,不幸的是,这只是VirtualBox,并没有帮助那些运行VMware的人。 到目前为止,我们还没有找到一种在Vagrantfile中运行代码的方法,具体取决于所使用的提供程序。
  • 我们现在尝试使用rsync类型,而不是使用标准的共享文件夹。 这适用于Windows,但在OS X上崩溃时有许多错误告诉我们symlink has no referent(每个符号链接一个错误)。
  • 我们考虑过NFS,但只有在不使用Windows作为主机时才有效。
  • 我们也关于SMB,但这只能在Windows上作为主机使用。

我无法想象我们是这个星球上唯一或第一个遇到共享文件夹中的多平台主机和符号链接问题的人。

你如何解决这个问题,以便我们可以保持符号链接,但仍然使用不同的主机操作系统?

trans by 2019-08-26T22:55:49Z

javascript for循环中的异步进程

这个问题在这里已有答案:

  • 循环内的JavaScript闭包 - 简单实用的例子                                     42个答案

我正在运行以下形式的事件循环:

var i;
var j = 10;
for (i = 0; i < j; i++) {

    asynchronousProcess(callbackFunction() {
        alert(i);
    });
}

我试图显示一系列显示数字0到10的警报。问题是,当回调函数被触发时,循环已经经历了几次迭代并且它显示更高的值i。 怎么解决这个问题?

trans by 2019-08-24T20:20:56Z

同步 - 如何与远程Git存储库同步?

我在github上分了一个项目,做了一些改动,到目前为止一直很好。

与此同时,我分叉的存储库发生了变化,我希望将这些更改存入我的存储库。 我怎么做 ?

trans by 2019-08-22T18:45:16Z

多线程 - .class的Java同步块

这个java代码是什么意思? 它会锁定MyClass的所有对象吗?

synchronized(MyClass.class) {
   //is all objects of MyClass are thread-safe now ??
}

以上代码与此不同:

synchronized(this) {
   //is all objects of MyClass are thread-safe now ??
}
trans by 2019-08-13T03:16:02Z

同步 - Node.js中的同步请求

如果我需要按顺序调用3个http API,那么对于以下代码来说,这将是一个更好的替代方法:

http.get({ host: 'www.example.com', path: '/api_1.php' }, function(res) { 
  res.on('data', function(d) { 

    http.get({ host: 'www.example.com', path: '/api_2.php' }, function(res) { 
      res.on('data', function(d) { 

        http.get({ host: 'www.example.com', path: '/api_3.php' }, function(res) { 
          res.on('data', function(d) { 


          });
        });
        }
      });
    });
    }
  });
});
}
trans by 2019-08-06T02:40:44Z

linux - 我们应该何时使用互斥锁,何时应该使用semaph

我们何时应该使用互斥锁?什么时候应该使用信号量?

trans by 2019-07-31T06:06:24Z

c# - 如何使用CancellationToken属性?

与上面的RulyCanceler类的代码相比,我想使用cancelToken.ThrowIfCancellationRequested();运行代码。

如何在取消令牌中提到它,即不抛出/捕获异常? 我可以使用cancelToken.ThrowIfCancellationRequested();属性吗?

我试图像这样使用它:

cancelToken.ThrowIfCancellationRequested();

try
{
  new Thread(() => Work(cancelSource.Token)).Start();
}
catch (OperationCanceledException)
{
  Console.WriteLine("Canceled!");
}

但是这在方法Work(CancellationToken cancelToken)中的cancelToken.ThrowIfCancellationRequested();上给出了运行时错误:

System.OperationCanceledException was unhandled
  Message=The operation was canceled.
  Source=mscorlib
  StackTrace:
       at System.Threading.CancellationToken.ThrowIfCancellationRequested()
       at _7CancellationTokens.Token.Work(CancellationToken cancelToken) in C:\xxx\Token.cs:line 33
       at _7CancellationTokens.Token.<>c__DisplayClass1.<Main>b__0() in C:\xxx\Token.cs:line 22
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:

我成功运行的代码在新线程中捕获了OperationCanceledException:

using System;
using System.Threading;
namespace _7CancellationTokens
{
  internal class Token
  {
    private static void Main()
    {
      var cancelSource = new CancellationTokenSource();
      new Thread(() =>
      {
         try
         {
           Work(cancelSource.Token); //).Start();
         }
         catch (OperationCanceledException)
         {
            Console.WriteLine("Canceled!");
         }
         }).Start();

      Thread.Sleep(1000);
      cancelSource.Cancel(); // Safely cancel worker.
      Console.ReadLine();
    }
    private static void Work(CancellationToken cancelToken)
    {
      while (true)
      {
        Console.Write("345");
        cancelToken.ThrowIfCancellationRequested();
      }
    }
  }
}
trans by 2019-07-31T02:00:43Z

多线程 - Java Singleton和Synchronization

请澄清我对Singleton和Multithreading的疑问:

  • 在多线程中用Java实现Singleton的最佳方法是什么?环境?
  • 当多个线程尝试访问getInstance()时会发生什么方法同时?
  • 我们可以制作单身人士的getInstance() synchronized吗?
  • 使用Singleton类时是否真的需要同步?
trans by 2019-07-22T13:13:30Z

多线程 - 如何在Java中运行不同类实例的线程之间同步静态变量?

我知道在方法为该对象带来同步之前使用lock关键字。 也就是说,将同步运行相同对象实例的2个线程。

但是,由于同步是在对象级别,因此将不会同步运行该对象的不同实例的2个线程。 如果我们在由该方法调用的Java类中有一个静态变量,我们希望它在该类的实例之间进行同步。 这两个实例在两个不同的线程中运行。

我们可以通过以下方式实现同步吗?

public class Test  
{  
   private static int count = 0;  
   private static final Object lock= new Object();    
   public synchronized void foo() 
  {  
      synchronized(lock)
     {  
         count++;  
     }  
  }  
}

是不是因为我们定义了一个静态的对象lock并且我们使用关键字synchronized进行该锁定,所以静态变量count现在跨类Test的实例同步了?

trans by 2019-07-05T09:05:27Z

c# - lock和Mutex有什么区别?

lock和Mutex有什么区别? 为什么他们不能互换使用?

trans by 2019-07-01T16:30:15Z

c ++ - C ++ 0x没有信号量? 如何同步线程?

是不是C ++ 0x没有信号量? Stack Overflow上已经有一些关于信号量使用的问题。 我一直使用它们(posix信号量)让线程等待另一个线程中的某个事件:

void thread0(...)
{
  doSomething0();

  event1.wait();

  ...
}

void thread1(...)
{
  doSomething1();

  event1.post();

  ...
}

如果我用互斥量做到这一点:

void thread0(...)
{
  doSomething0();

  event1.lock(); event1.unlock();

  ...
}

void thread1(...)
{
  event1.lock();

  doSomethingth1();

  event1.unlock();

  ...
}

问题:它很难看并且不能保证thread1首先锁定互斥锁(假设同一个线程应该锁定和解锁互斥锁,你也可以在thread0和thread1启动之前锁定event1)。

因此,由于boost也没有信号量,实现上述目标的最简单方法是什么?

trans by 2019-06-28T00:57:41Z

多线程 - Java静态初始化程序是否安全?

我正在使用静态代码块来初始化我所拥有的注册表中的某些控制器。 因此,我的问题是,我可以保证这个静态代码块只在首次加载类时才会被调用一次吗? 我知道我无法保证何时会调用此代码块,我猜它是在Classloader首次加载它时。 我意识到我可以在静态代码块中同步类,但我的猜测实际上这是怎么回事?

简单的代码示例是;

class FooRegistry {

    static {
        //this code must only ever be called once 
        addController(new FooControllerImpl());
    }

    private static void addController(IFooController controller) { 
        // ...
    }
}

或者我应该这样做;

class FooRegistry {

    static {
        synchronized(FooRegistry.class) {
            addController(new FooControllerImpl());
        }
    }

    private static void addController(IFooController controller) {
        // ...
    }
}
trans by 2019-05-29T04:52:05Z

1 2 下一页 共2页