多线程并发学习笔记(1)

main(非守护线程)和jvm其他的守护线程(守护线程后续会介绍)

 

线程生命周期:

blocked状态线程获取锁或结束睡眠变为runnable状态,然后获取到cpu时间片变为running状态。running状态线程也会因为cpu时间片分配切换线程使其变为runnable,然后再获取到时间片变为running(这些进程“看起来像”同时运行,实则是轮番运行,由于时间片通常很短(在Linux上为5ms-800ms),用户不会感觉到)

 

创建线程的方式1:

Thread thread1=new Thread(){

run(){

//业务方法体

}

 }

thread1.start();

明明复写run方法为什么要调.start()呢?

因为内部用的模板方法的技巧,线程内部实现,start()内部调用run(),并做了其他处理,所以创建线程我们只用实现run()即可。

 

创建线程的方式2:

 

        PrimeRun A = new PrimeRun("A"); //实例化线程要执行的任务

        Thread Ta = new Thread(A); //实例两个线程对象,实际传递的是一个任务

        Thread Tb = new Thread(A); //因为两个线程执行的是一个任务,所以资源是共享的

        Ta.start();

        Tb.start();

使用实现Runnable接口方式创建线程可以共享同一个目标对象(TreadDemo1 tt=new TreadDemo1();),实现了多个相同线程处理同一份资源。

runnable这种设计思想,有助于业务逻辑与系统代码分离,降低整体耦合度。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值