当加速度计数据超过由我确定的阈值时,我的程序正在向Web服务器发送数据。所以,我用的线程机制的发送操作:Android,线程使用
if(threshold is exceeded)
thread_send .start();
但这种用法事业“主题已被使用”的错误。所以我用,我认为是坏的是下面的方法和它的工作原理:
if(threshold is exceeded) {
thread_send = new Thread(this);
send_thread.start();
}
新线程动不动创建。这种用法会造成负面结果吗? (例如,内存问题或性能问题等)
您有什么建议?
编辑:
我的程序应该经常发送数据到web服务器。最重要的是工作correctly.So慢的工作是允许的,只要程序不能突然停止..
我使用的ExecutorService符合您的建议:
ExecutorService threadExecutor = Executors.newSingleThreadExecutor();
........
if(threshold is exceeded) {
threadExecutor.execute(this);
}
但错误发生: RecejtedExecutionException ..
我该怎么办?
这取决于多长时间发送一次数据,以及您需要多快发送数据等因素。例如,如果您可以等待一段时间,则可能可以将数据保存在内存中,并在应用完成时一次性发送。如果您几乎连续发送数据,那么执行多个工作的单个线程或线程池(例如由“Executors.newXXX”创建的线程池)可能会更好。 – 2011-12-19 23:52:04