闯天涯天宇和值谜迷猜数字

你对这个回答的评价是

你对这個回答的评价是?

你对这个回答的评价是

采纳数:0 获赞数:2 LV1

草头半吾代表什么数字?

你对这个回答的评价是

在说之前先普及一下线程是什么

线程:说白了就是一个任务片段

进程:是一个具有独立功能的程序关于某个数据集合的一次运行活动,一个进程有一个或者多个线程

线程与进程的本质区别就是有么有数据共享空间线程之间可以共享数据,进程不可以

下面进入主题:线程间的同步

由于现在业务流程增加业务节点也增加,使用业务的人员也同时增加这个时候就不可避免的出现并发问题,多个线程同时访问操作某一个数据单元

我们以银荇转账为例说明下面先上代码:

建立一个银行的类,里面主要包括三个方法一个是转账,一个是得到现有银行存款总数一个是得到現在存户数量

下面是转账类,因为需要并发操作所以实现Runnable接口

我们看上面的结果,特别是最后三行的total总数发现,第一第二次转账后總数不对了,仔细观察打印结果由于并行执行任务,而且中间由于是由cup分配执行顺序所以我们看到的结果并没有完全按照我们的方法所实现的那样输出出来

由于出现这样的问题,我们引入“锁”的概念由于这里面是浅析,就不针对锁详细说明下面我们在bank类里面的转賬方法上面加上最简单最常用的锁synchronized,看看结果是怎样:

上面的输出结果基本一致最后一个结果出现小数问题,主要是由于我数据精度的問题后续可以通过其他设置来避免。

程序里面由于出现了锁所以在性能上面不可避免的出现下降,特别是在一些大型程序里面所以這里面需要根据实际业务所需,把锁的范围锁到比较小的范围使得性能不会大幅度的下降。

最后我们把上面的东西总结出一个图


我要回帖

更多关于 天宇和值谜 的文章

 

随机推荐