java简单多线程_教你java最简单粗暴的入门多线程!

这里并没有讲什么新东西,只是把多线程一些知识来个总结。大家懂得可以复习复习,还有些童鞋对多线程朦胧的可以拿这个做为入门~

举个栗子说明啥是多线程:玩游戏,前面一堆怪,每个怪都是一个线程,你射了一枪,子弹飞出去了,这颗子弹也是一个线程。你打开你的进程管理,看到你游戏的后台进程,这就是进程。

一、线程创建

这里友情提示:2、3、4种方法的参数,三种写法是等效的(new two() <==> ()->{} <==> new Runnable)8be6281e74feb313e153218a0547df7a.png

说到这肯定要顺便提一下,面试时候爱问的,继承Thread和实现Runnable的区别。一句话回答:单继承多实现。

二、锁(synchronized和Lock)

锁其实很多,读写锁,分布式锁,等等。这里我们就先介绍最常用的2个。

①synchronized,这个单词是同步的意思。fa318d03eed9387411d2d7768bf20686.png

synchronized: 对象级别。例如:一个类有2个方法,两个方法都上锁,因为是对象级别,即使2个线程访问不同方法,一个方法没有释放锁另一个也不能执行,这就是同步。除非另一个方法没上锁,那么该方法就是异步的。

一个对象一把锁:synchronized,对象锁,只对一个对象生效!

static synchronized: 就是类级别的锁。那么即使你实例化多个实例,不同线程去跑,这个类一次也只允许一个线程进来。

②锁的重入

锁重入:比如2个方法one、two都加了synchronized,one里调用了two,那么可以执行two方法(即使one没有执行完)。继承也可以用锁重入。58b3029c9878e78b0c373de544dd63ac.png

③Lock lock和synchonizide差不多,但是功能性更强一点。34e9ef0774fa6d1b3abcd92bb766019e.png

读写锁意思就是:读读共享,读写互斥,写写互斥。意思是如果两个方法都是调用读锁,那么多线程可以并发访问。但是一个方法调用读方法,一个调用写方法,那么该锁就会变成同步锁(一个方法完了才去执行另一个)。推荐下我自己的Java学习群:515675832,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括我自己整理的一份2017最新的Java资料和零基础入门教程,欢迎初学和进阶中的小伙伴。

三、sleep、wait、notifyd9ce726f3a81527bf8952ac072650f21.png

wait会让出锁的控制权,notify会唤醒wait。

notify和sleep的区别:sleep在时间到了会自动唤醒,wait要notify唤醒。

注意:notify不会立即释放锁,所以上述例子,会在notify后一秒才释放锁。

总结:本节主要介绍了多线程、锁以及线程间通信等基础知识点。下一节,我要讲原子计数器,volatile,countdownLatch,并发集合,并发队列,线程副本等。算是多线程的进阶吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值