Java多线程和并发编程实践的学习心得----基础篇3
三 线程的同步与并发
并发:并发就是多个线程同时去完成一点复杂的事情,在实际应用中,经常用到线程的并发,多条线程做完成一件事情和一条线程去完成一件事情,那是无法同言而语的。
同时并发编程,可以充分利用服务器资源,
提高服务吞吐量、降低响应时间(爬虫、WebServer、日志分析……),以及在一些分布式系统(资源的争用、可伸缩性)的服务器编程中到处都要用的并发编程。
同步:当线程并发的时候,随之而来的也带来了一些问题,如果多条线程去同时操作共享而用的数据那将是会使共享的数据很容易就出现错误。在JAVA中提供同防止多条线程同时共享数据的方式是:synchronized,volatile很好的利用这两个关键字就能防止并发而带来的问题, 同时在JAVA1.5之后也提供了更多好用的类来解决这个问题 。
线程池:当有许多请求需要去处理的时候,如果只是单独的一个人去处理,可想而知那会让后面在排队的人等多久,这样就需要线程池,有请求过来了就到线程池里 面取出一条线程去处理它,处理完成就把它收回到线程池里面,然而自己实现 一个功能强大的线程池也并非易事,在java1.5之后专门提供了线程池的类库。下图是线程池的模型:
1 常见术语解释:
可见性:
在没有使用同步机制的情况下,一个线程对某个共享对象的修改,并不会立即被其它的线程读取到。