关于线程的二三事(持续更新)

第一部分:

首先,说说线程和进程的区别吧。

花开两支,各表一处!

进程,是一个动态的概念,每个进程都有的代码和数据空间,切换进程会有较大的开销。

而线程呢,又叫轻量级进程。同一类的线程共享代码和数据空间,线程的切换较小。

一个应用程序就是一个进程,在操作系统中,可以同时运行多个进程(应用程序);而线程就是同一个应用程序中的多个顺序流,可以同时执行。

一个进程可以包含多个线程,不含线程的进程可以看作单线程。

最后,CPU会为进程分配内存,不会为线程分配内存。因为线程都是在进程中的,线程组共享资源。

java程序中,main方法是一个线程,一般称为主线程。底层中,GC也是一个线程。

第二部分:线程创建

1、继承java.lang.Thread方法 + 重写run()方法。

2、实现 runnable接口 + 重写run()方法(实际上静态代理模式),代理角色是Thread类。

3、实现callable接口 + 重写run()方法。这种方法创建线程,可以有返回值和能够声明异常。比较麻烦一点。

调用方法:前两种都是调用的对象的start()方法。第三种是调用服务的方式启动线程。

第三部分:线程状态


状态看下图即可,一目了然。


阻塞的方法:1、join()合并线程,等待合并的线程执行完。

                      2、yield()暂停自己,执行其他线程

                     3、sleep(),当前线程睡多长时间

                     4、等待IO资源

                     ......



如有不对的地方,请批评指正!

一直相信,再牛逼的梦想,也挡不住傻逼似的坚持。

我只是一个平凡普通的程序员,码自己的代码 ,过平凡的生活。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值