- 博客(7)
- 收藏
- 关注
原创 如何判断当前线程为主线程的方法
1、Looper.myLooper() == Looper.getMainLooper()2、Thread.currentThread() == Looper.getMainLooper().getThread()
2019-06-21 08:27:56 1657
原创 关于Executor框架
写多线程的程序离不开Thread和Runnable两个类,这两者初看起来是一回事,其实不同。Runnable代表了一个要执行的任务,而Thread代表了一个执行任务的工人。工人和任务之间可以有各种组合方式,比如可能所有任务都由一个工人完成,也可能固定数量的工人完成所有任务,也可能根据任务的多少动态增加工人数来完成任务等等。因此Runnable和Thread之间有一个执行策略需要配置,java提供了...
2019-06-20 06:37:07 111
原创 ProgressDialog和AsyncTask的使用
一般在安卓中为了方便子线程与主线程之间的交互,是通过主线程的Handler来实现的,即子线程用主线程的Handler来发送消息或post Callback,在主线程中就可以HandlerMessage或执行Callback。这种方式已经算很方便了,但是如果想加入一些附加的功能,比如子线程工作时显示一个进度条,子线程退出时,关闭进度条,就不太方便了。AsyncTask是安卓中为了方便子线程与U...
2019-06-14 12:47:48 181
原创 多线程编程的关键是要保护数据
多线程的程序与单线程相比,主要的特点是“同一份数据可能会被多个线程访问,而每个线程执行的程序代码是有可能被从中间中断的,因此如果处理不好,数据的改变可能不是我们期望的那样。”为了让数据是按期望的那样被修改,必须保证在多个线程访问这些数据时,一定是某个线程执行的某段代码按预期全部执行完,才让另一个线程执行,这称为线程同步concurrency,也就是对数据的保护机制。同步的方式有很多种,比如对某...
2019-06-14 08:19:59 540
原创 关于ble bluetooth notify/incate返回数据失序的讨论帖子
Notifications can be received out of order on Android:https://github.com/don/cordova-plugin-ble-central/issues/625How could i achieve maximum thread safety with a read/write BLE Gatt Characterist...
2019-06-13 15:57:31 362
原创 AtomicXXX原子类
Java中有二十多个Atomic类,用来表示线程安全的数据类型或对象引用,是线程安全的机制之一。它与volatile修饰的数据不同之处在于:由它封装的数据操作都是线程安全的,比如对于AtomicInteger有incrementAndGet()操作,相当于线程安全的++i,这一点volatile就做不到。...
2019-06-05 06:44:34 91
原创 关于Java中的volatile变量
在Java中进行线程同步,一般使用的是synchronized加锁机制,但是有时候对某些变量可以采用volatile标示达到线程同步的效果。当把一个变量指明为volatile时,实际上告诉编译器,这个变量是会被多线程访问的。因此编译器将不会做下面两种操作:1、不会将该变量上的操作与其他内存操作重排序;2、不会将该变量缓存到寄存器。这样做的结果导致对该变量的读取和写入这两种操作一定是...
2019-05-29 10:23:15 358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人