关于多线程理解(二)

一丶多线程并发的理解?

1.1.对于单核的cpu来说真的可以做到真正的多线程并发吗?什么是真正的多线程并发,t1线程执行t1,t2的线程执行t2,t1不会影响t2,t2也不会影响t1,这叫多线程并发,单核cpu做不到多线程并发,但是可以给人一种"多线程并发的感觉",例电影胶卷,人反应速度慢所以造成假象。

1.2.分析程序有几个线程,见图1。

二丶实现线程的第一种方式?

2.1.该类去继承Thread,重写run方法,这是第一种,见图2。

三丶run和start的区别?

3.1.run()方法不会进行并发执行,而是依照自上而下,上面程序未结束那么下面的程序就不会执行,不会并发, 而start()方法会额外开辟新的栈内存,并且该方法瞬间结束,然后主线程与分支线程里的run()方法同时进行,完成并发并行。

public class Test01 {
    public static void main(String[]  args){
        Test01 test01 = new Test01();

        test01.test();
    }
    /*
    除垃圾回收机制外该线程有几个线程?当次只有一个线程。图一
     */
    public static void test(){
        System.out.println("t begin");
        m1();
        System.out.println("t over");
    }

    private static void m1() {
        System.out.println("m1 begin");
        m2();
        System.out.println("m1 over");
    }

    private static void m2() {
        System.out.println("m2 begin");
        m3();
        System.out.println("m2 over");
    }

    private static void m3() {
        System.out.println("m3 execute");
    }
}
//图二
public class Test02 {
    public static void main(String[] args){
        MyThrea myThrea = new MyThrea();
        myThrea.start();
        /*该start一执行瞬间结束,作用用来开辟新的栈空间,如果直接调用run()方法那么不会启动新的线程
            且做不到并发
        */
        for(int i = 0;i <= 1000;i++){
            System.out.println("主线程---------》" + i);
        }
    }
}
class MyThrea extends Thread{
    //继承Tread重写run方法
    public void run(){
        for(int i = 0;i <= 1000;i++){
            System.out.println("分支线程---------》" + i);
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏航航航

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值