2014-06-25 62 views
1

我构建了一个应用程序,它可以在不着色的情况下对来自位图的像素进行重新着色,而只需逐个像素的CPU进行着色。这对我来说足够快,但我想知道CPU是否默认使用了多线程,而没有在编程中实际使用它?默认情况下是Android多线程而不使用它?

+0

你能提供你的代码吗? :) –

+0

哦,我只是问自己,如果可能的话,不是为了解决任何问题。该代码是一个非常具体的实现。你想要自己的代码? – csnewb

+0

哦,不,但谢谢你! :P我只是好奇,如果你正在调用自己创建线程的任何对象。 :D –

回答

3

Documentation


默认情况下,应用程序启动运行的线程(称为 “主”)。此线程非常重要,因为它负责将事件分派到相应的用户界面小部件 (包括绘图事件)。它也是您的应用程序与来自Android UI工具包 (来自android.widget和android.view包的组件)交互组件的线程。如 这样,主线程有时也被称为UI线程。

和螺纹的关系,以CPU为(多线程例子):


多线程程序的这种优势使得它在具有多个或多计算机系统快 操作因为程序的线程自然会借助 来真正实现并发执行。在这种情况下,程序员必须小心避免竞态条件和其他非直观行为。为了使数据正确地被操作,线程通常需要及时会合以便 以正确的顺序处理数据。为了防止在修改过程中同时修改公共数据或 ,中的线程还可能需要 互斥操作(通常使用信号量实现)。大意使用这样的原语可能会导致死锁。

多线程的另一种用途,即使对单CPU系统也适用, 是应用程序对输入保持响应的能力。在 单线程程序中,如果主执行线程阻塞了长时间运行的任务,整个应用程序可能会冻结。通过 将此类长时间运行的任务移动到与主执行线程同时运行 的工作者线程,可能使 应用程序在后台执行任务 时仍对用户输入做出响应。另一方面,在大多数情况下,多线程并不是保持程序响应的唯一方式,使用非阻塞I/O 和/或Unix信号可用于获得类似结果。

长话短说。不,你的程序不会是多线程的,除非你明确告诉它。而在Android的情况下,AsyncTask将是与UIThread(main)交互时要走的路线。

+0

谢谢,这就是我一直在寻找的东西。 – csnewb

+0

没问题:) @csnewb –

相关问题