<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenm91的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chenm91</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenm91]]></copyright><item><title><![CDATA[如何判断当前线程为主线程的方法]]></title><link>https://blog.youkuaiyun.com/chenm91/article/details/93157821</link><guid>https://blog.youkuaiyun.com/chenm91/article/details/93157821</guid><author>chenm91</author><pubDate>Fri, 21 Jun 2019 08:27:56 +0800</pubDate><description><![CDATA[1、


Looper.myLooper() == Looper.getMainLooper()

2、


Thread.currentThread() == Looper.getMainLooper().getThread()
]]></description><category></category></item><item><title><![CDATA[关于Executor框架]]></title><link>https://blog.youkuaiyun.com/chenm91/article/details/92924055</link><guid>https://blog.youkuaiyun.com/chenm91/article/details/92924055</guid><author>chenm91</author><pubDate>Thu, 20 Jun 2019 06:37:07 +0800</pubDate><description><![CDATA[写多线程的程序离不开Thread和Runnable两个类，这两者初看起来是一回事，其实不同。Runnable代表了一个要执行的任务，而Thread代表了一个执行任务的工人。工人和任务之间可以有各种组合方式，比如可能所有任务都由一个工人完成，也可能固定数量的工人完成所有任务，也可能根据任务的多少动态增加工人数来完成任务等等。因此Runnable和Thread之间有一个执行策略需要配置，java提供了...]]></description><category></category></item><item><title><![CDATA[ProgressDialog和AsyncTask的使用]]></title><link>https://blog.youkuaiyun.com/chenm91/article/details/91959901</link><guid>https://blog.youkuaiyun.com/chenm91/article/details/91959901</guid><author>chenm91</author><pubDate>Fri, 14 Jun 2019 12:47:48 +0800</pubDate><description><![CDATA[一般在安卓中为了方便子线程与主线程之间的交互，是通过主线程的Handler来实现的，即子线程用主线程的Handler来发送消息或post Callback，在主线程中就可以HandlerMessage或执行Callback。这种方式已经算很方便了，但是如果想加入一些附加的功能，比如子线程工作时显示一个进度条，子线程退出时，关闭进度条，就不太方便了。

AsyncTask是安卓中为了方便子线程与U...]]></description><category></category></item><item><title><![CDATA[多线程编程的关键是要保护数据]]></title><link>https://blog.youkuaiyun.com/chenm91/article/details/91943561</link><guid>https://blog.youkuaiyun.com/chenm91/article/details/91943561</guid><author>chenm91</author><pubDate>Fri, 14 Jun 2019 08:19:59 +0800</pubDate><description><![CDATA[多线程的程序与单线程相比，主要的特点是“同一份数据可能会被多个线程访问，而每个线程执行的程序代码是有可能被从中间中断的，因此如果处理不好，数据的改变可能不是我们期望的那样。”

为了让数据是按期望的那样被修改，必须保证在多个线程访问这些数据时，一定是某个线程执行的某段代码按预期全部执行完，才让另一个线程执行，这称为线程同步concurrency，也就是对数据的保护机制。同步的方式有很多种，比如对某...]]></description><category></category></item><item><title><![CDATA[关于ble bluetooth notify/incate返回数据失序的讨论帖子]]></title><link>https://blog.youkuaiyun.com/chenm91/article/details/91868921</link><guid>https://blog.youkuaiyun.com/chenm91/article/details/91868921</guid><author>chenm91</author><pubDate>Thu, 13 Jun 2019 15:57:31 +0800</pubDate><description><![CDATA[Notifications can be received out of order on Android：https://github.com/don/cordova-plugin-ble-central/issues/625



How could i achieve maximum thread safety with a read/write BLE Gatt Characterist...]]></description><category></category></item><item><title><![CDATA[AtomicXXX原子类]]></title><link>https://blog.youkuaiyun.com/chenm91/article/details/90876602</link><guid>https://blog.youkuaiyun.com/chenm91/article/details/90876602</guid><author>chenm91</author><pubDate>Wed, 05 Jun 2019 06:44:34 +0800</pubDate><description><![CDATA[Java中有二十多个Atomic类，用来表示线程安全的数据类型或对象引用，是线程安全的机制之一。它与volatile修饰的数据不同之处在于：由它封装的数据操作都是线程安全的，比如对于AtomicInteger有incrementAndGet()操作，相当于线程安全的++i，这一点volatile就做不到。
...]]></description><category></category></item><item><title><![CDATA[关于Java中的volatile变量]]></title><link>https://blog.youkuaiyun.com/chenm91/article/details/90665963</link><guid>https://blog.youkuaiyun.com/chenm91/article/details/90665963</guid><author>chenm91</author><pubDate>Wed, 29 May 2019 10:23:15 +0800</pubDate><description><![CDATA[在Java中进行线程同步，一般使用的是synchronized加锁机制，但是有时候对某些变量可以采用volatile标示达到线程同步的效果。

当把一个变量指明为volatile时，实际上告诉编译器，这个变量是会被多线程访问的。因此编译器将不会做下面两种操作：

1、不会将该变量上的操作与其他内存操作重排序；

2、不会将该变量缓存到寄存器。

这样做的结果导致对该变量的读取和写入这两种操作一定是...]]></description><category></category></item></channel></rss>