![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
恒哥~Bingo
继续学习~~~
展开
-
聊聊多线程(五)生产者消费者模式
生产者消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这种生产消费能力不均衡的问题,所以便有了生产者和消费者模式。线程的等待和通知一旦线程进入同步块或同步方法,JVM会启动监视器监控线程的状态,线程都会持有锁,同步块持有是锁对象,同步方法的锁是this.Object类的方法:原创 2020-12-16 08:47:31 · 655 阅读 · 0 评论 -
聊聊多线程(四)线程安全之AtomicInteger类
线程安全的概念多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。线程安全问题假设我们的网站要统计用户人数,我们需要通过变量的自增来实现:count++; 这个操作存在线程安全问题: static int count = 0; public static void main(String[] args) { for(int i = 0;i原创 2020-12-15 16:36:57 · 1173 阅读 · 2 评论 -
聊聊多线程(三)线程安全问题
线程同步问题什么是线程同步问题多个线程同时访问同一个资源(变量、对象、文件等)时就可能出现线程同步问题。多个线程执行时是抢占式的,一个线程在执行一个操作时(调用方法,更新变量),可能会被其他线程打断,导致操作没有完全完成,可能会造成数据出现不一致的情况。线程同步问题案例:银行转账/** * 银行类 * @author xray * */public class Bank { //模拟100个账户的余额 int[] accounts = new int[100]; //初始化每原创 2020-12-15 16:33:35 · 685 阅读 · 1 评论 -
聊聊多线程(二)线程池
线程池线程池的作用一般情况下线程运行就死亡了,后面如果有新任务就必须创建新的线程,如果有大量的任务就需要创建大量线程,会降低服务器的性能,造成资源的浪费。线程池的作用是:首先会在池中分配一定数量的线程,线程使用完后会回到池中,等待下一个任务,线程资源就得到回收利用,减少服务器资源的消耗,提高了性能。线程池的APIExecutor接口ExecutorService接口AbstractExecutorService抽象类ThreadPoolExecutor线程池类Executors工具类原创 2020-12-15 16:32:11 · 562 阅读 · 1 评论 -
聊聊多线程(一)线程的基础
线程基础进程和线程进程:正在运行的程序,需要内存和CPU资源进行运算执行,一个程序包含一个或多个进程线程:是进程的组成单元,一个进程包含一个或多个线程,每个线程负责单独执行一个任务进程和线程的区别:一个进程包含一个或多个线程每个进程都有自己独立的内存空间,线程没有自己独立的内存空间,线程共享所在进程的内存空间进程是重量级的单元,需要系统资源比较多,线程是轻量级单元,需要资源比较少多进程和多线程多进程是操作系统可以同时运行多个进程。一个CPU内核一个时间只能执行一个进程,CPU会原创 2020-12-15 16:28:21 · 892 阅读 · 0 评论