我在Java中的Threads中使用join()方法时感到困惑。 在下面的代码中: // Using join() to wait for threads to finish. class NewThread implements Runnable { String name; // name of thread Thread t; NewThread(String threadname) { name = threadname; t = new Thread(this, name); System.out.println("New thread: " + t); t.start(); // Start the thread } // This is the entry point for thread. public […]
我正在开发一个Android应用程序,在Android平台提供的内置SQL Light中存储不同types的数据。 在应用程序内部,我放置了一个“同步”button,它应该同步本地SQL Light数据库与我的服务器上的在线SQL Server数据库之间的数据。 什么是解决这个问题的方法? 您可以在Google日历中find此function,您可以在其中查看移动设备上的日历活动,当您添加新活动并同步数据时,也可以通过转到在线帐户查看更新后的数据。 注意:我不想将我的数据库集中到网上,因为我也想给移动用户在没有互联网连接的情况下使用应用程序的能力。 谢谢。
这几天我正在模拟Android中的modal dialog。 我search了很多,有很多的讨论,但可悲的是没有太多的选项来获得它的模式。 这里有一些背景, 对话框,modal dialog和Blockin Dialogs / AlertDialogs:如何在对话框启动时阻止执行(.NET风格) 有没有直接的方式来获得模态行为,然后我想出了3个可能的解决scheme, 1.使用一个对话主题的活动,就像这个线程所说的那样,但是我仍然不能使主要活动真正地等待对话活动的返回。 主要活动转到停止状态,然后重新启动。 2.构build一个工作线程,并使用线程同步。 然而,这是我的应用程序的一个巨大的重构工作,现在我有一个主要的UI线程中的主要活动和服务。 3.当模式对话框出现时,接pipe循环内的事件处理,并在对话框closures时退出循环。 实际上,这是build立一个真正的modal dialog的方式,就像在Windows中一样。 我还没有这样的原型。 我仍然想用对话主题的活动来模拟它, 1.通过startActivityForResult()启动dialog-activity 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 […]
让我使用这个小而简单的示例: class Sample { private String msg = null; public void newmsg(String x){ msg = x; } public String getmsg(){ String temp = msg; msg = null; return temp; } } 假设函数newmsg()被其他我无权访问的线程调用。 我想使用synchonize方法来保证每次只有一个函数使用msgstring。 换句话说,函数newmsg()不能和getmsg()同时运行。
当多个线程在同一个对象上请求一个锁时,CLR是否保证锁将按照它们被请求的顺序被获取? 我写了一个testing,看看这是否是真实的,似乎表明是的,但我不确定这是否是确定性的。 class LockSequence { private static readonly object _lock = new object(); private static DateTime _dueTime; public static void Test() { var states = new List<State>(); _dueTime = DateTime.Now.AddSeconds(5); for (int i = 0; i < 10; i++) { var state = new State {Index = i}; ThreadPool.QueueUserWorkItem(Go, state); states.Add(state); Thread.Sleep(100); } states.ForEach(s => […]
我有一个进程A包含一个logging中的一个表(loggingA,loggingB等) 现在,这个过程可以启动许多影响logging的线程,有时我们可以有2个线程试图访问相同的logging – 这种情况必须被拒绝。 特别是如果一条logging被一个线程locking,我想另一个线程中止(我不想阻塞或等待)。 目前我做这样的事情: synchronized(record) { performOperation(record); } 但是这会导致我的问题…因为当Process1执行操作时,如果Process2进入,它会在synchronized语句上阻塞/等待,当Process1完成时它将执行操作。 相反,我想要这样的东西: if (record is locked) return; synchronized(record) { performOperation(record); } 任何线索如何可以完成? 任何帮助将非常感激。 谢谢,
我只find相当复杂的答案,涉及类,事件处理程序和callback(这似乎是一个有点大锤的方法)。 我认为callback可能是有用的,但我似乎不能在最简单的情况下应用这些。 看到这个例子: <html> <head> <script type="text/javascript"> function myfunction() { longfunctionfirst(); shortfunctionsecond(); } function longfunctionfirst() { setTimeout('alert("first function finished");',3000); } function shortfunctionsecond() { setTimeout('alert("second function finished");',200); } </script> </head> <body> <a href="#" onclick="javascript:myfunction();return false;">Call my function</a> </body> </html> 在此,第二个函数在第一个函数之前完成; 什么是最简单的方法(或者是否有)?强制第二个函数延迟执行,直到第一个函数完成? – -编辑 – – 所以这是一个垃圾的例子,但感谢大卫Hedlund我看到这个新的例子,它确实是同步的(与我的浏览器在testing过程中崩溃!): <html> <head> <script type="text/javascript"> function myfunction() { longfunctionfirst(); shortfunctionsecond(); } […]
我正在尝试加载单元格中的分析数据,但问题是,它正在同步发生,UitableView不会显示,直到数据完成加载。 我试图通过使用performSelectorInBackground来解决这个问题,但是现在数据并没有加载到单元格中,直到我开始滚动。 这是我的代码: – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self performSelectorInBackground:@selector(fethchData) withObject:nil]; } – (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. self.listData = nil; self.plot=nil; } -(void) fethchData { NSError *error = nil; NSURL *url=[[NSURL alloc] initWithString:@"http://www.website.com/"]; […]
根据Java语言规范 ,构造函数不能被标记为同步的,因为其他线程在创build它的线程完成之前不能看到正在创build的对象。 这似乎有点奇怪,因为我确实可以让另一个线程在构造时查看对象: public class Test { public Test() { final Test me = this; new Thread() { @Override public void run() { // … Reference 'me,' the object being constructed } }.start(); } } 我知道这是一个非常人为的例子,但从理论上来说,有人可能会想出一个更现实的情况,即标记同步的构造函数是合法的,以防止像这样的线程的比赛。 我的问题是:是否有一个原因,Java会明确禁止在构造函数的同步修饰符? 也许我上面的例子是有缺陷的,也许真的没有理由,这是一个任意的devise决定。 无论哪种情况,我都很好奇,很想知道答案。
我有一个桌面应用程序使用git进行同步。 我也有一个android应用程序,做的桌面相同,但我不知道如何做它的同步部分。 我还没有发现在Android上的任何实施的git。 我find了一个jgit,但是它的logging不完整,我甚至无法做到这一点。 我正在考虑从我的android应用程序到我的git服务器的远程命令,但这对我来说真是一个挑逗。 你能告诉我,如果有任何其他可以在Android上使用的git实现存在? 如果你有任何想法如何解决,请告诉我。