Android并发编程高级面试题汇总最全最细面试题讲解持续更新中👊👊 👀你想要的面试题这里都有👀 👇👇👇
Android开发中怎样判断当前线程是否是主线程 (字节跳动)
这道题想考察什么?
是否了解怎样获取当前线程是否是主线程有哪些与真实场景使用,是否熟悉怎样获取当前线程是否是主线程在工作中的表现是什么?
考察的知识点
怎样获取当前线程是否是主线程的概念在项目中使用与基本知识
考生应该如何回答
Android开发中, 有时需要判断当前线程到底是主线程, 还是子线程, 例如: 我们在自定义View时, 想要让View重绘, 需要先判断当前线程到底是不是主线程, 然后根据判断结果来决定到底是调用 invalidate()
还是 postInvalidate()
方法。
在工作中获取当前的主线程,主要是借助Android中的Looper:
Looper.getMainLooper() == Looper.myLooper();
Looper.getMainLooper().getThread() == Thread.currentThread();
Looper.getMainLooper().getThread().getId() == Thread.currentThread().getId();
线程间如何通信?
这道题想考察什么?
是否了解线程间如何通信与真实场景使用,是否熟悉线程间如何通信该如何操作的本质区别?
考察的知识点
Handler
考生应该如何回答
线程之间进行通信的方式需要基于具体需求分析,如果仅仅只是为了完成线程间的同步,使用锁如synchronized 即可;如果需要完成线程之间的协作,也可以采用wait/notify、CountDownLatch或者Cyclicbarrier等方式。而在Android中还设计了Handler机制可以完成线程间通信。
Handler是Android系统中线程间传递消息的一种机制。