我目前正在研究用java编写的android项目。 我有一个仪表板,用于查询来自cloudant数据库的数据并在图表上呈现数据。但是,收到时必须处理数据 我有4个AsyncTasks同时(或应该)在doInBackground Override方法中处理接收到的数据。这个过程很慢,我试过了这行
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
在每个AsyncTask中 但是,4个AsynkTasks似乎都是一个接一个地发生,是因为将线程的优先级更改为max?当一个线程优先级被改变时,它是否会停止所有其他线程并继续只有一个线程直到它完成?
答案 0 :(得分:3)
来自:https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
每个帖子都有优先权。执行具有更高优先级的线程 优先于优先级较低的线程。每个线程可能或可能 也不会被标记为守护进程。当代码在某个线程中运行时 创建一个新的Thread对象,新线程最初具有其优先级 设置等于创建线程的优先级,并且是一个守护进程 当且仅当创建线程是守护进程时才会线程化。
(作为注释:通过在google中搜索“java Thread.MAX_PRIORITY”并查看顶部结果来找到此信息)
答案 1 :(得分:2)
每个帖子都有优先权。执行具有更高优先级的线程 在首选项中,优先级较低的线程。 ...当代码运行时 一些线程创建一个新的Thread对象,新的线程有它 优先级初始设置等于创建线程的优先级。
它实际上只是一个提示,告诉调度程序大致执行线程的顺序。它可以而且可能会忽略你。
如果您已将所有线程的优先级设置为最大值,则实际上与将它们保留为默认值相同。你可能要告诉你的老板,如果一切都是首要任务,那么没有什么是首要任务:)