简单代码分析线程

8 篇文章 0 订阅
public class Test1 {
    private static boolean running=true;
    static int i=0;
    public static void main(String[] args) throws InterruptedException {
        runTets();
        Thread.sleep(100);//增加sleep 主线程休眠,此时running =true 因此线程一直运行
        running = false;
    }
    public static void runTets(){
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                while(running){
                    //outrun();//如果有方法溢出则不进行指令重排
                    i++;
                }
            }
        });
        t1.start();
    }
    public static void outrun(){
        System.out.println("99999999999");
    }
}

结论分析:

* main 函数不变,while循环执行空方法此时为线程一直执行,由于指令重排,jvm 为了更高效的执行,将runing 标识为true
* main 函数去掉休眠,while循环执行空方法此时为线程执行完成,此种现象为二八理论,,此种情形大部分先执行main线程
* main 不变,while 执行i++ 此时一直执行,指令重排
* main 不变,调用其它方法,由于指令重排规则函数溢出不进行指令重排,具体有哪些规则可上网查询
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值