java什么是多线程_Java中,什么样才算是真正的实现了多线程?

我不知道你平时用java主要做什么开发,如果你是做web应用开发,可以说,你每写的一段代码都可能是多线程代码。那为什么我们平时竟然没发觉呢?是前人帮我们做了太多事,以至于我们根本不需要考虑我们代码能不能为多个用户同时使用,但其实都是支持多人同时访问的,在我看来这就是一种多线程,也是宏观的一种并发运行。虽然我们不再为程序的基础架构是否支持并发访问而烦恼了,真的就代表我们不再用考虑并发情况了吗?答案是肯定不是的。最基本的,你在spring中的service类中定义一个全局整数变量,然后并不对这个变量做任何同步操作的话,假如你在你的程序中不恰巧地使用了它并做了,那么当并发对它进行加减(比如你的网站每次重启后这个数字就默认是0,你正好用它来代表有多少客户访问过你的网站,那么在极端情况下,这个数字就可能没有实现你所想要实现的功能,而少加了一些)再比如你从缓存中会取出一个数字然后每次加1,那么当多个线程同时过来了,然后对它进行get操作,然后+1然后在set到redis很可能这个时候就出错了,因为假如初始值是0,同时来了三个线程做了上面我们说的事,那么当他们三个线程结束后这个数字居然是1!而不是3!但是这个程序也不会给你报错,这就需要你有多线程的思维,否则你就会一直沉浸在自己的小逻辑里(咦~怎么不对哩?按道理不该这样啊!)

而所谓的多线程编程,就是去解决这样的问题,但是光是避免这样的问题还不够!我们的目标是不断优化,能支持更多的人,能让更多的线程能同时访问我们的程序时而不出现像上面我们提到的两个状态不一致的情况。小到一个变量,大到缓存,数据库,服务间的状态一致以及在一致的情况下支持更多的访问,都是我们多线程编程所不断追求的东西。所以说到这里,你应该也明白了,多线程的实现方式根本可以说就是不值一提的,多线程的魅力是在追求多线程编程中碰到的问题(一致性问题),然后不断遇到挑战,不断优化!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值