线程优先级究竟在Java中做了什么

时间:2017-07-25 14:19:48

标签: java android-asynctask thread-priority

我目前正在研究用java编写的android项目。 我有一个仪表板,用于查询来自cloudant数据库的数据并在图表上呈现数据。但是,收到时必须处理数据 我有4个AsyncTasks同时(或应该)在doInBackground Override方法中处理接收到的数据。这个过程很慢,我试过了这行

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

在每个AsyncTask中 但是,4个AsynkTasks似乎都是一个接一个地发生,是因为将线程的优先级更改为max?当一个线程优先级被改变时,它是否会停止所有其他线程并继续只有一个线程直到它完成?

2 个答案:

答案 0 :(得分:3)

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

  

每个帖子都有优先权。执行具有更高优先级的线程   优先于优先级较低的线程。每个线程可能或可能   也不会被标记为守护进程。当代码在某个线程中运行时   创建一个新的Thread对象,新线程最初具有其优先级   设置等于创建线程的优先级,并且是一个守护进程   当且仅当创建线程是守护进程时才会线程化。

(作为注释:通过在google中搜索“java Thread.MAX_PRIORITY”并查看顶部结果来找到此信息)

答案 1 :(得分:2)

From the documentation

  

每个帖子都有优先权。执行具有更高优先级的线程   在首选项中,优先级较低的线程。 ...当代码运行时   一些线程创建一个新的Thread对象,新的线程有它   优先级初始设置等于创建线程的优先级。

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

如果您已将所有线程的优先级设置为最大值,则实际上与将它们保留为默认值相同。你可能要告诉你的老板,如果一切都是首要任务,那么没有什么是首要任务:)