如何学习Java多线程?

JAVA中的多线程使用十分广泛,很多的JAVA框架都使用到了多线程,比如spring,mybatis,druid等!多线程有什么好处呢?比如说web服务器的多连接,异步调用,并行操作,避免持续阻塞等等!多线程怎么实现呢?1,继承Thread类,2,实现Runnable接口,3 实现callable futureTask实现异步回调,4,使用线程池Executors.newFixedThreadPool(5);多线程怎么保证线程安全?1,时间换空间:加锁①,synchronize:锁方法,锁代码段,锁对象,锁的粒度大!②,reentrantlock:使用lock和unlock实现加锁和解锁,可使用ReadWriteLock读写锁来实现读和写的锁分离,底层使用CAS和AQS实现,这也是很多框架里面用到的技术!2,空间换时间:线程的本地变量隔离,ThreadLocal,实现一个线程一份变量,数据不共享,所以线程安全,spring中bean默认都是单例的,但是spring接受并发请求是线程安全的,就是因为使用threadlocal把请求,上下文数据装在了线程里。

所以请求之间互不干涉!JAVA多线程还涉及到哪些技术?1,synchonizeHashmap,hashTable(基本上是锁方法,所以效率低),concurrentHashmap(分段锁,锁粒度小,性能好),CopyOnWriteArrayList、CopyOnWriteArraySet(可重入锁)等等!2,countdownbatch用做计数器!3,使用forkjoin做并行计算!4,有锁不如无锁!....多了解这些技术下面底层的东西,多去实际情景中总结,犯错然后改正才能更快的成长!JAVA多线程知识点可以写好几本书,而随便一个知识点都可以写一章,只有经常钻研并使用才能懂其精髓,希望我在这条路上越走越远,以后学到的东西就记录于此,互相学习,共勉。


文章TAG:雪姨王琳陕西话俄语秒切换被盛赞  陕西多线程怎么用  雪姨  王琳  陕西  
下一篇