java 方法 java两个线程同时调用一个类里的同一个方法,这样会出现什么情况?有没有问题?
浏览量:1762
时间:2021-03-17 07:03:09
作者:admin
java两个线程同时调用一个类里的同一个方法,这样会出现什么情况?有没有问题?
这取决于方法的功能。如果该方法要修改相同的变量,则可能会导致线程不同步。也就是说,如果两个线程都调用一个公共变量5-1,结果可能是4,因为它们可能都得到5,然后它们都配对5-1,然后将值赋给原始变量。如果该方法只通过传入的参数计算返回值,不涉及修改公共变量,则没有效果
但是,当两个线程都被锁定时,如果它们包含同一个对象,则不可能同时运行,同时运行只是一种错觉。同时,只能处理一个线程
web服务器将维护一个线程池。当新请求传入时,它将从线程池中获取一个线程进行处理。处理之后,它将把它放入线程池中,等待下一个请求获取它。
当多个语句在同一线程上运行以共享数据时,一个线程只执行部分语句,但尚未完成。另一个线程参与了这个过程,这导致了共享数据的错误。解决方案是只有一个线程可以完成对多个共享数据进行操作的语句。在执行过程中,其他线程不参与执行。
Java为多线程安全问题提供同步代码块
同步对象可以是任意的
{需要同步的代码(哪些代码在操作共享数据)}
对象就像锁一样。持有锁的线程可以在同步中执行不带锁的线程,即使它获得了CPU的执行权限,也无法进入,因为它没有访问权限
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。