认识多线程(区别;优点;执行顺序;创建线程)

⭐区分进程线程

  
进程(Process):

操作系统资源分配的最小单位

多进程:都去银行汇款,如果甲和乙用的不是同一张银行卡,其实根本办的不是一件事

  
线程 (Thread):

操作系统调度的最小单位(操作系统CPU资源分配的最小单位)

多线程:都去银行汇款,如果甲和乙用的是同一张银行卡,其实办的就是同一件事


1.为什么需要多线程模型处理?优点

  有些场合 可能提升速度;(增加线程极限、本身创建线程+销毁线程 也需要耗费时间)
  有些场合 必须使用多线程;(阻塞式IO,一个调度单位倒下,剩下调度单位还能抢CPU工作)

  线程可能被从CPU上调度下来的5种情况?
    1.高优先级抢走
    2.执行结束
    3.在等IO
    4.主动放弃
    5.时间片耗尽
  
  

2.多线程谁先谁后?

  优先级只是建议,不是强制!!!
  t.join( ); 主线程阻塞,直到t线程执行结束,猜接着往下执行

输出结果:大概率是 main–>a–>b ,其他情况都有可能!!!!!!!!!!
     大概率CPU最先分配给主线程main,主线程结束在分配给其他线程

public class 线程执行顺序与主线程对比 {

    private static class A extends Thread{
        @Override
        public void run(){
            System.out.println("我是A");
        }
    }

    private static class B extends Thread{
        @Override
        public void run(){
            System.out.println("我是B");
        }
    }

    public static void main(String[] args) {
        A a=new A();
        B b=new B();

        //a、b 放入就绪队列中
        a.start();
        b.start();
        System.out.println("我是main");
    }

}

  
  

3.如何创建线程对象 ??? (后续.start()加入就绪队列)

  直接创建线程对象;
  先创建任务对象,再创建线程对象。

  Thread类代表线程,Runnable类代表任务。

private static class MyThread extends Thread{
    @Override
    public void run(){
        //希望线程执行的代码
    }
}

Thread t=new MyThread();          //创建线程对象

-------------------------------------------------------------------

private static class MyRunnable implements Runnable{
    @Override
    public void run(){
        //希望线程执行的代码
    }
}

Runnable target=new MyRunnable();      //创建target目标对象 任务
Thread t1=new Thread(traget);          //创建线程去运行同一份目标对象
Thread t2=new Thread(traget);
Thread t3=new Thread(traget);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cyril-zxy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值