诚然,Java多线程在Java开发中得到了广泛的应用,大多数的Java项目都会优先考虑多线程的方案。然而,从一个单线程的应用到多线程的应用并不仅仅带来好处,其也会带来一些代价,不要仅仅为了使用多线程而使用多线程,应该明确在使用多线程的时候能带来的好处比付出的代价大的时候,才使用多线程。下面我们就来单方面地了解一下Java多线程的缺点,避免我们在Java开发时盲目地选择Java多线程。
这一点其实很好理解,Java多线程在提高系统工作效率的同时,也会加大设计程序的工作量,相对于单线程的设计来说,复杂度提升了一些,同时也会带来人力和资源成本的提高。
当CPU从执行一个线程切换到另外一个线程的时候,它需要存储当前线程的本地数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行,这种切换称为“上下文切换”CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另一个线程。上下文的切换非常耗费系统资源。如果没有必要,应该减少上下文切换的发生。
这一点是不可避免的,相同目的的情况下,单线程和多线程的资源消耗是不一样的,多线程的速度更快,但是资源消耗也增加了。线程在运行的时候,需要从计算机里得到一些资源,除了CPU,线程还需要一些内存来维持它本地的堆栈,还需要占用操作系统中的一些资源来管理线程。
在许多应用中进程需要以独占的方式访问资源,当操作系统允许多个进程并发执行时可能会出现进程永远被阻塞现象,如两个进程分别等待对方所占的资源,于是两者都不能执行而处于永远等待状态,这也是多线程编程的特点。
当多个线程需要对共有变量进行写的操作时,后一个线程往往会修改掉前一个线程存放的数据,从而使前一个线程的参数被修改,另外当共有变量的读写操作是非原子性时,在不同的机器上是不确定的,中断时间的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误是程序员无法预知的。
好了,我们在了解了多线程的缺点之后并不是说就完全不使用多线程来进行Java开发了,事实上,无论是现在还是将来,多线程编程仍是主流,多线程带来的好处也是显而易见的,相对应它的缺点来说似乎都是可以容忍的。所有,我们仍然要学习Java多线程,动力节点在线的免费视频课程就有很好的Java多线程的视频资料,感兴趣的小伙伴千万不要错过哦。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54