如果不能保证所有线程看到的操作都是一致的(要么成功然后处理成功的逻辑,要么失败然后处理失败的逻辑),这样才能够保证我们的实际应用业务是可控的,结果是可预期的
>>>>
解决线程安全方案
非共享资源是属于线程安全的...1) 在当前线程栈中的局部变量.方法参数,抛出异常的处理器对象,由于只在线程栈中自己使用,并没有共享给其他线程,因此这类数据是属于线程安全的,也就是不存在数据竞争的情况
2) ThreadLocal以及...4) Java加锁方式
不可变的变量数据,即使用final修饰的变量数据
可见性问题
>>>>
产生可见性的原因
在java应用程序中存在主内存与工作内存之分,因此数据变量在程序中存在读取缓存问题
java...3) 其他方案: 在业务代码中如果能够使用单锁解决问题则使用单锁的方式
服务机器资源
机器资源的限制
1) 硬件方面有CPU核数以及CPU的处理读写能力, 网络带宽问题, 磁盘读写速度, 磁盘空间,...JVM进程在单位时间所能承担的并发量,然后根据预估计算需要分配的资源,比如网络带宽,JVM启动的内存分配,实际的机器个数等
2) 根据业务的读写场景,对文件并发读写频繁的业务可以选择IO磁盘处理能力较强的机器