2017-07-25 65 views
0

我目前正在用Java编写的Android项目。 我有一个仪表板,可以查询云数据库中的数据并在图表上呈现数据。但数据必须在收到时处理。
我有4个AsyncTasks,在doInBackground覆盖方法同时处理接收到的数据(或者是应该)。这个过程非常缓慢,我试过究竟做线程的优先级做在Java中

Thread.currentThread().setPriority(Thread.MAX_PRIORITY); 

在每个AsyncTask中。
然而,4个AsynkTasks似乎一切发生一前一后,是由于改变线程最高的优先级?当一个线程优先级被改变时,它是否会停止所有其他线程并继续执行,直到完成?

+0

从上'Thread'的JavaDoc:“每个线程都有具有更高优先级的线程优先与执行线程的优先级。较低的优先级。“ – Thomas

+0

即使更改优先级,除非他们是真正的小任务,他们应该仍然表现出一定程度的并行性。发布更多代码以查看其他地方是否存在某种错误。 – bracco23

回答

3

来源:https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

每个线程都有一个优先事项。执行 优先级较高的线程优先于较低优先级的线程。每个线程可能或可能不会被标记为守护进程。当某个线程 运行的代码创建一个新的Thread对象,新线程的初始优先级设置 等于创建线程的优先级,并且是一个守护线程 当且仅当创建线程是守护进程。

(作注:此信息被发现在谷歌搜索 “Java的Thread.MAX_PRIORITY” 看着上方结果)

+0

不错的一个!格式作为报价,所以我们都可以看到这不是你的意见 –

2

From the documentation

每个线程都有一个优先事项。具有较高优先级的线程与较低优先级执行 在偏好到螺纹上。 ......当 运行某个线程的代码创建一个新的Thread对象,新线程都有 优先初始设定为等于创建线程的优先级。

这实际上只是一个提示,告诉调度程序大致执行线程的顺序。它可以,也可能会忽略你。

如果您已设置的所有线程的最高优先级,这实际上是相同的,在默认的离开他们。正如你可能要告诉你的老板,如果一切是当务之急那么没有什么是当务之急:)