Java的多线程应该怎么学(看完这里你就知道了)

JAVA中的多线程使用十分广泛,很多的JAVA框架都使用到了多线程,比如spring,mybatis,等! 多线程有什么好处呢?比如说web服务器的多连接,异步调用,并行操作,避免持续阻塞等等!

多线程怎么实现呢?1,继承Thread类,2,实现Runnable接口,3 实现callable+futureTask实现异步回调,4,使用线程池Executors.newFixedThreadPool(5); 多线程怎么保证线程安全? 1,时间换空间:加锁 ①,synchronize:锁方法,锁代码段,锁对象,锁的粒度大! ②,:使用lock和unlock实现加锁和解锁,可使用ReadWriteLock读写锁来实现读和写的锁分离,底层使用CAS和AQS实现,这也是很多里面用到的技术!

2,空间换时间:线程的本地变量隔离,ThreadLocal,实现一个线程一份变量,数据不共享,所以线程安全,spring中bean默认都是单例的,但是spring接受并发请求是线程安全的,就是因为使用threadlocal把请求,上下文数据装在了线程里。所以请求之间互不干涉! JAVA多线程还涉及到哪些技术? 1,synchonizeHashmap,hashTable(基本上是锁方法,所以效率低),concurrentHashmap(,锁粒度小,性能好),CopyOnWriteArrayList、CopyOnWriteArraySet(可重入锁)等等! 2,countdownbatch用做计数器! 3,使用做并行计算! 4,有锁不如无锁! .... 多了解这些技术下面底层的东西,多去实际情景中总结,犯错然后改正才能更快的成长!

JAVA多线程知识点可以写好几本书,而随便一个知识点都可以写一章,只有经常钻研并使用才能懂其精髓,希望我在这条路上越走越远,以后学到的东西就记录于此,互相学习,共勉。。

经验分享 程序员 微信小程序 职场和发展