多线程Thread1

多线程

1.为什么要用多线程,或者所生活中有哪些多线程
    程序的顺序结构是,做完一件事之后才能做下一件事
    但是有些事情是需要同时完成的,呼吸-吃饭-思考

    1.1 进程-任务-task
        每一个进程表示一个操作系统的任务,每个任务可能会有很多子任务
    1.2 调度机制:抢占式调度
         吃饭,人很多,但是窗口很少,只要前面的人打完饭了,下一个就立马去打饭
    1.3 吃饭-吸气-思考
        时间线(时间片)
        三个人同时上厕所这是一个任务,每个人都是一个子任务
        从老板的角度来看,这个事件(三个人上厕所任务),完成的时间是8:15-8:40
        宏观上和微观上的有区别

                8:15  8:20  8:25  8:30  8:35  8:40
        张三      1            1
        李四             1           1
        王五                                1     1
        抢占式调度容易造成数据紊乱,比如这个一个没有完成可能会被另外一个拉出来

    1.4 一个任务中的多个子任务,会导致堆和栈的数据被共享,进而引发线程不安全的问题
        共享变量被修改的时候容易出现问题
2.java是如何实现多线程的
    同时有多个程序,一个时间片多个任务在执行,但一个时间点只能有一个任务
        1、通过继承Thread类实现
        2、实现runnable接口
        runable 太简单了,Thread封装了很多类
        3、两种方法异同点:
            a、使用接口的话,可以达到多继承的方法,避免业务单一化
            b、使用接口的话,程序会更加健康,代码可以被多个线程共享,代码和数据个更加独立
            c、后面使用线程池,默认的参数类型也是Runnable
            d、但是及成果使用Thread 功能会更加多样化
            为什么 Thread t=new Thread(new Runnable)
                1、语法定义
                2、runnable 的功能方法少,这样能通过这种方法继承更多方法
3、两种方法的实名周期
4、常见的Thread的方法
    4、1 sleep()
    4、2 interrupt():此方法专门打断sleep,提前醒来
    4、3 线程的优先级
        优先级高的线程,只能说明他有更多的可能,不能保证一定优先获取时间片
    4、4 new Thread(Runable的实现类实例,Thread的重命名)
        优先级的默认值 5,范围1-10
    4、5 可以获得线程的ID
         getID
    4、6 可以获得当前的线程
        Thread.currentThread();
    4、7 获得名字
        getName()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值