- 若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。 若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
- 线程执行完毕或者出现异常就会进入终止状态,终止状态的线程不会切换到其他任何状态,这也意味着线程的生命周期结束了。以上就是通用的线程生命周期,下面,我们再看对比看下Java语言中的线程生命周期。 线程执行完毕或者出现异常就会进入终止状态,终止状态的线程不会切换到其他任何状态,这也意味着线程的生命周期结束了。以上就是通用的线程生命周期,下面,我们再看对比看下Java语言中的线程生命周期。
- java 多用户即时通讯系统 提升功力推荐(难度较大)。 java 多用户即时通讯系统 提升功力推荐(难度较大)。
- 理论上就是用户下单后,减去商品的库存就完事了。但是,如果你的系统流量很大,并发度非常高,比如淘宝的双十一,有一款爆款商品参加了活动,库存只有1000件,有几十万上百万用户抢购,商品售完1000件为止,一件不能多,一件也不能少。你还会觉得简单吗?搞不好就会出现“超卖”的情况,后果就会很严重了。 理论上就是用户下单后,减去商品的库存就完事了。但是,如果你的系统流量很大,并发度非常高,比如淘宝的双十一,有一款爆款商品参加了活动,库存只有1000件,有几十万上百万用户抢购,商品售完1000件为止,一件不能多,一件也不能少。你还会觉得简单吗?搞不好就会出现“超卖”的情况,后果就会很严重了。
- 最近,一名小伙伴跟我说:他写的程序在测试环境一点问题没有,但是发到生产环境却会频繁出现内存溢出的情况,这个问题都困扰他一周多了。于是乎,周末我便开始帮他排查各种问题。 最近,一名小伙伴跟我说:他写的程序在测试环境一点问题没有,但是发到生产环境却会频繁出现内存溢出的情况,这个问题都困扰他一周多了。于是乎,周末我便开始帮他排查各种问题。
- 今天我们再上一篇高并发干货,一起来聊聊Java中的并发原子类。接下来,我们开始今天的正文吧。 今天我们再上一篇高并发干货,一起来聊聊Java中的并发原子类。接下来,我们开始今天的正文吧。
- 模式就是解决问题的固定套路,设计模式(Design pattern)就是一套经过前人反复使用,总结出来的程序设计经验。设计模式总共分为三大类: 第一类是创建型模式 ,该模式通常和对象的创建有关,涉及到对象实例化的方式。包括:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式五种; 第二类是结构型模式,结构型模式描述的是如何组合类和对象来获得更大的结构。包括:代理模式、装饰者模式、适配器模式 模式就是解决问题的固定套路,设计模式(Design pattern)就是一套经过前人反复使用,总结出来的程序设计经验。设计模式总共分为三大类: 第一类是创建型模式 ,该模式通常和对象的创建有关,涉及到对象实例化的方式。包括:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式五种; 第二类是结构型模式,结构型模式描述的是如何组合类和对象来获得更大的结构。包括:代理模式、装饰者模式、适配器模式
- 当我们提到多线程、并发的时候,我们就会回想起各种诡异的bug,比如各种线程安全问题甚至是应用崩溃,而且这些诡异的bug还很难复现。我们不禁发出了灵魂拷问 “为什么代码测试环境运行好好的,一上线就不行了?”。 为了解决线程安全的问题,我们的先辈们在编程语言中引入了各种各样新名词,就拿我们熟悉的Java为例,不仅java语言自带了synchronized、volatile、wait、not... 当我们提到多线程、并发的时候,我们就会回想起各种诡异的bug,比如各种线程安全问题甚至是应用崩溃,而且这些诡异的bug还很难复现。我们不禁发出了灵魂拷问 “为什么代码测试环境运行好好的,一上线就不行了?”。 为了解决线程安全的问题,我们的先辈们在编程语言中引入了各种各样新名词,就拿我们熟悉的Java为例,不仅java语言自带了synchronized、volatile、wait、not...
- 对共享变量加锁虽然能够保证线程的安全,但是却增加了开发人员对锁的使用技能,如果锁使用不当,则会导致死锁的问题。而ThreadLocal能够做到在创建变量后,每个线程对变量访问时访问的是线程自己的本地变量。 对共享变量加锁虽然能够保证线程的安全,但是却增加了开发人员对锁的使用技能,如果锁使用不当,则会导致死锁的问题。而ThreadLocal能够做到在创建变量后,每个线程对变量访问时访问的是线程自己的本地变量。
- 之前在票圈说写一篇,后面整理完脑图后发现一个问题,一篇文章根本说不清楚啊。除了要写一些书中的精华之外,更多的是要结合冰河实际工作中接触的分布式系统的真实架构案例,写一些冰河个人的总结和体会,希望能够为大家带来一些实质性的帮助。 之前在票圈说写一篇,后面整理完脑图后发现一个问题,一篇文章根本说不清楚啊。除了要写一些书中的精华之外,更多的是要结合冰河实际工作中接触的分布式系统的真实架构案例,写一些冰河个人的总结和体会,希望能够为大家带来一些实质性的帮助。
- 冰河曾经说过:周末和假期假期是超越他人的最好时机,悄悄努力,然后惊艳所有人。 冰河曾经说过:周末和假期假期是超越他人的最好时机,悄悄努力,然后惊艳所有人。
- 《深入理解高并发编程》系列第2册—《深入理解高并发编程:JDK核心技术》来了,结合《深入理解高并发编程:核心原理与案例实战》一书,深入理解并发编程的核心原理、案例实战和系统架构,再熟悉或精通JDK中提供的各种并发编程类库和线程池,再加上自己能够手写线程池,这应该能超越大部分人吧?更重要的是这次冰河会亲自指导你如何更好的学习并发编程 《深入理解高并发编程》系列第2册—《深入理解高并发编程:JDK核心技术》来了,结合《深入理解高并发编程:核心原理与案例实战》一书,深入理解并发编程的核心原理、案例实战和系统架构,再熟悉或精通JDK中提供的各种并发编程类库和线程池,再加上自己能够手写线程池,这应该能超越大部分人吧?更重要的是这次冰河会亲自指导你如何更好的学习并发编程
- 处理InterruptedException异常时要小心,如果在调用执行线程的interrupt()方法中断执行线程时,抛出了InterruptedException异常,则在触发InterruptedException异常的同时,JVM会同时把执行线程的中断标志位清除,此时调用执行线程的isInterrupted()方法时,会返回false。此时,正确的处理方式是在执行线程的run()方法中捕获 处理InterruptedException异常时要小心,如果在调用执行线程的interrupt()方法中断执行线程时,抛出了InterruptedException异常,则在触发InterruptedException异常的同时,JVM会同时把执行线程的中断标志位清除,此时调用执行线程的isInterrupted()方法时,会返回false。此时,正确的处理方式是在执行线程的run()方法中捕获
- tcp_nodelay参数并不是在操作系统级别进行配置的,而是在TCP套接字上添加tcp_nodelay参数来关闭粘包算法,以便使数据包能够立即投递出去。tcp_nodelay参数主要是对TCP套接字来说的,那对于服务器硬件,如果要使其能够支撑上百万甚至上千万的并发,我们该如何对其进行优化呢? tcp_nodelay参数并不是在操作系统级别进行配置的,而是在TCP套接字上添加tcp_nodelay参数来关闭粘包算法,以便使数据包能够立即投递出去。tcp_nodelay参数主要是对TCP套接字来说的,那对于服务器硬件,如果要使其能够支撑上百万甚至上千万的并发,我们该如何对其进行优化呢?
- new Thread弊端: (1)每次new Thread新建对象,性能差。 (2)线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM。 (3)缺少更多的功能,如更多执行、定期执行、线程中断。 new Thread弊端: (1)每次new Thread新建对象,性能差。 (2)线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM。 (3)缺少更多的功能,如更多执行、定期执行、线程中断。
上滑加载中
推荐直播
热门标签