IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> CPU的乱序执行 -> 正文阅读

[移动开发]CPU的乱序执行

CPU在进行读等待的同时执行指令,是CPU乱序的根源。不是乱,而是提高效率。

CPU在执行A指令的时候,指令B也在执行,甚至B指令执行完了A指令还在执行。例如:A指令去内存读数据,等待返回期间,B指令可以优先执行。(AB指令不能存在依赖关系,可以提升效率)

public class Disorder {
    private static int x=0,y=0;
    private static int a=0,b=0;
//无论这两个线程怎么排列组合 如果没有重排序,一定不会存在x=0 且 y=0
    public static void main(String[] args) throws InterruptedException {
        int i=0;
        //不停的死循环
        for (; ; ) {
            i++;
            x=0;y=0;
            a=0;b=0;
            Thread one= new Thread(new Runnable() {
                @Override
                public void run() {
                    //由于线程one先启动,下面这句话让它等一等线程two
                    //shortWati(100000);
                    //前后没有依赖关系 a=1和 x=b
                    a=1;
                    x=b;
                }
            });
            Thread other = new Thread(new Runnable() {
                @Override
                public void run() {
                    //如果不存在乱序,b=1一定在y=a前面
                    b=1;
                    y=a;
                }
            });
            one.start();other.start();
            one.join();other.join();
            String result = "第"+i+"次("+x+","+y+")";
            if(x==0 && y==0){
                System.err.println(result);
                break;
            }else{
                System.out.println(result);
            }
        }

    }
    public static void shortWait(long interval){
        long start = System.nanoTime();
        long end;
        do{
            end=System.nanoTime();
        }while (start+interval>=end);
    }

}
第1283次(1,0)
第1284次(0,1)
第1285次(1,0)
第1286次(0,1)
第1287次(0,0)

最终出现了乱序执行的情况

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:10:03  更:2022-05-06 11:10:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:05:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码