日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

《Android进阶之光》--多线程编程

發布時間:2025/3/20 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Android进阶之光》--多线程编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

No1:

實現多線程的3中方法

1)繼承Thread,重寫run()方法

2)實現Runnable接口,并實現該接口的run()方法

3)實現Callable接口,重寫call()方法

public class TestCallable{//創建線程類public static class MyTestCallable implements Callable{public String call() throws Exception{return "Hello World";}}public static void main(String[] args){MyTestCallable mMyTestCallable = new MyTestCallable();ExecutorService mExecutorService = Executors.newSingleThreadPool();Future mfuture = mExecutorService.submit(mMyTestCallable);tyr{//等待線程結束,并返回結果 System.out.println(mfuture.get());}catch(Exception e){e.printStackTrace();}} }

No2:

原子性:

對基本數據類型變量的讀取和賦值是原子性操作,即這些操作是不可被中斷的

x = 3; //語句1 y = x; //語句2 x++; //語句3

只有語句1是原子性操作

語句2包含兩個原子性操作:先讀取x的值,再將x的值寫入工作內存。合起來就不是原子性操作

語句3包含3個原子性操作:讀取x的值,對x的值進行加1,向工作內存寫入新值。

所以,一個語句含有多個操作時,就不是原子性操作

volatile不保證原子性

No3:

可見性:

線程之間的可見性,一個線程修改的狀態對另一個線程是可見的。

當一個共享變量被volatile修飾時,它會保證修改的值立即被更新到主存,所以對其他線程是可見的。

No4:

有序性:

volatile、synchronized、Lock保證每個時刻只有一個線程執行同步代碼,這相當于是讓線程順序執行同步代碼,從而保證了有序性。

volatile禁止使用指令重排序

No5:

Android3.0版本之前的AsyncTask核心線程數是5個,允許創建的最大線程數為128,非核心線程空閑等待新任務的最長時間為1s。采用的阻塞隊列是LinkedBlockingQueue,容量為10.

No6:

在Android3.0以上版本AsyncTask使用并行的線程處理

asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,"");

No7:

阻塞隊列

阻塞隊列常用于生產者和消費者的場景,生產者是往隊列里添加元素的線程,消費者是從隊列里拿元素的線程。阻塞隊列就是生產者存放元素的容器,而消費者也只是從容器里拿元素

常見阻塞場景

1)當隊列中沒有數據的情況下,消費者端的所有線程會被自動阻塞(掛起),直到有數據放入隊列

2)檔隊列中填滿數據的情況下,生產者的所有線程都會被自動阻塞(掛起),直到隊列中有空的位置,線程被自動喚醒

轉載于:https://www.cnblogs.com/anni-qianqian/p/8506200.html

總結

以上是生活随笔為你收集整理的《Android进阶之光》--多线程编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。