导航:首页 > 编程语言 > java并发问题

java并发问题

发布时间:2022-08-13 18:42:18

❶ 《java并发编程实战》上面的一个问题

总共就三种情况!!!!1.无限循环,number的值为0:在主线程即main方法中对ready的设置(即ready = true)还没来得及写回主存(静态变量保存在方法区),ReaderThread 线程就已经读取了ready的值(并保留了副本),然后加载到Java栈中,此时ready 一直为false所以出现死循环。number的值也可以类似推理,在主线程即main方法中对number的设置(即number= 42)还没来得及写回主存(静态变量保存在方法区),ReaderThread 线程就已经读取了number的值(并保留了副本),然后加载到Java栈中,此时number一直为0(只是没有打印出来而已);

2.无限循环,number的值为42:在主线程即main方法中对ready的设置(即ready = true)还没来得及写回主存(静态变量保存在方法区),ReaderThread 线程就已经读取了ready的值(并保留了副本),然后加载到Java栈中,此时ready 一直为false所以出现死循环。在主线程即main方法中对number的设置(即number= 42)后(即number的值已经写回了主存),ReaderThread 线程才开始执行此时读取的number为42(只是没有打印出来而已);

3.输出0:在主线程即main方法中对ready的设置(即ready = true)后(即ready的值已经写回了主存),还没来得及写回主存(静态变量保存在方法区),ReaderThread 线程就已经读取了number的值(并保留了副本),然后加载到Java栈中,此时number为0;

至于为什么会出现ready = true写回主存后,number = 42还没写回主存。这应该是由于Java虚拟机的一种优化技术叫指令重排序,number = 42不一定会在ready = true前面执行,得看Java虚拟机是怎么优化的。

❷ java多线程并发问题怎么解决

java多线程并发问题产生的主要原因是多个线程访问一个实例,导致其中一个线程修改或删除这个实例时,其他线程产生并发问题。

要解决这种并发问题有两种方法:
(1)加上线程锁synchronization
(2)还有个不是办法的办法:不用成员变量,用局部变量

❸ java 项目开发中中如何解决高并发问题

对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,

但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。

为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步

1、同步和异步的区别和联系

所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到

返回的值或消息后才往下执行其它的命令

异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回

值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。

同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行(死心眼)。

异步在一定程度上可以看做是多线程的(废话,一个线程怎么叫异步),请求一个方法后,就不管了,继续执行其他的方法。

同步就是一件事,一件事情一件事的做。
异步就是,做一件事情,不引响做其他事情。

例如:吃饭和说话,只能一件事一件事的来,因为只有一张嘴。
但吃饭和听音乐是异步的,因为,听音乐并不引响我们吃饭。

对于Java程序员而言,我们会经常听到同步关键字synchronized,假如这个同步的监视对象是类的话,那么

阅读全文

与java并发问题相关的资料

热点内容
pic单片机如何编程 浏览:888
javabyte写文件 浏览:319
java获取类包名 浏览:888
ftp命令编码格式 浏览:298
程序员那么可爱陆离穿正装 浏览:169
源码的账号密码在哪个文件 浏览:437
如何在中国农业银行app绑定银行卡 浏览:990
shopnum1多用户商城系统源码 浏览:744
红包广告平台源码 浏览:770
硬盘格式化时用的dos命令是 浏览:940
找人缓解压力 浏览:937
iphone的pdf 浏览:351
90压缩饼干怎么吃 浏览:668
php教材下载 浏览:915
什么解压密码最好 浏览:590
数据库与服务器如何连接 浏览:444
架构师需要阅读的源码 浏览:483
ch编译器 浏览:456
java必须自己写一个编译器吗 浏览:944
如何制作androidrom 浏览:476