java多线程(一) 之 简介
来源:互联网 发布:下载头像的软件 编辑:程序博客网 时间:2024/05/18 15:28
一. 多线程的优势:
GUI线程可以提高用户界面的响应灵敏度
服务器中,提升资源利用率以及系统吞吐率
简化JVM的实现
发挥多处理器的强大力量
建模的简单性
异步事件的处理简化
二. 线程带来的风险
1.安全性问题:
例如非线程安全的数值生成器:
public class UnsafeSequence { private int value; public int getNext(){ return value++; }}
测试代码:
final UnsafeSequence ufs = new UnsafeSequence(); boolean a[] = new boolean[10000]; boolean b[] = new boolean[10000]; new Thread(){ public void run() { for(int i = 0;i<10000;i++){ a[ufs.getNext()] = true; } }; }.start(); for(int i = 0;i<10000;i++){ b[ufs.getNext()] = true; } for(int i = 0;i<a.length;i++){ if(a[i]==b[i]) System.out.println(i); }
执行过程:
时间:(0.001ms)0-->1-->2-->3-->4-->5--6-->7-->8A: value=9 9+1=10 value=10B: value=9 9+1=10 value=10
线程安全的数值序列生成器
public class Sequence { private int value; public synchronized int getNext(){ return value++; }}
2.活跃性问题:
例如:线程A等待线程B释放其持有资源,而线程B永远都不释放该资源,那么A将会永远等待下去.
活跃性问题包括:死锁,饥饿,活锁.
3.性能问题:
例如: 服务时间过长,响应不灵敏,吞吐率过低,资源消耗过高,或者可伸缩性较低等.
当线程共享数据时,必须使用同步机制,而这些机制往往会抑制某些编译器的优化,是内存缓存区中的数据无效,以及增加内存总线的同步流量.
0 0
- java多线程(一) 之 简介
- java多线程与并发之java线程简介(一)
- Java 多线程之--ThreadLocal 简介
- 一、初学Java多线程:线程简介
- Java菜鸟学习笔记--多线程篇(一):多线程简介
- (一)java多线程之Thread
- (一)java多线程之Thread
- Java多线程之旅(一)
- java多线程之其他知识简介
- Java多线程之线程的简介
- Java多线程编程之Runnable、Thread简介
- java多线程之线程与进程简介
- iOS 多线程简介 一
- java多线程与并发之java线程简介(二)
- java多线程与并发之java线程简介(三)
- java多线程与并发之java线程简介(四)
- java多线程与并发之java线程简介(五)
- java多线程与并发之java线程简介(六)
- hive的metastore的选择
- 最短的包含字符串
- 机器学习中常用的矩阵求导公式
- [TensorFlow]入门学习笔记(2)-卷积神经网络mnist手写识别
- python计算机视觉和机器学习所需包(全)
- java多线程(一) 之 简介
- 很外没有写文章了
- Linux /etc/profile文件详解
- Easyui 在dialog中加载datagrid,并实现可拖放行(drag and drop rows)
- 图片上传并保存到数据库以及显示图片
- JVM、JRE和JDK简单了解
- Maven基础
- 计算给定日期增加自然月后的日期
- Python学习笔记