关于java的flush
发布日期:2021-10-16 10:03:49 浏览次数:2 分类:技术文章

本文共 488 字,大约阅读时间需要 1 分钟。

java中在write()方法后尽量手动调用flush()方法,原因呢:

这里首先应该对I/O对计算机体系结构要有一个简单的了解,计算机分为运算器、控制器、存储器、输入/输出。cpu由运算器、控制器和寄存器等等组成。存储器分为内存和外存,这里简单说一下I/O。
I/O主要是对外存的读/写,而cpu的速度远远大于I/O,此时就有很多策略解决,这时将数据加入缓冲区是一个高效的方法,这样减少了cpu的I/O次数,提高运行效率,但是read()和write()是线程阻塞的,当某个线程向另一网络节点读写数据时,当发生网络连接异常或服务器短暂无响应,这会发生线程阻塞,同样在无数据进行读取或者数据已满进行写操作时,同样会发生阻塞,这是其他线程抢占资源,缓冲区的数据不能及时输送需要等到竞争到cpu时间才可以发送,还有一种策略是当缓冲区长度满了以后才会将缓冲区发送,这样,若到了文件末尾往往会因为缓冲未满导致数据未发送,此时在write()后手动调用flush(),这样手动强制将数据发送,不会有数据滞留在缓冲区中,这种事情会经常发生,应该注意再次特做笔记。

这里就有之前碰到的例子:

转载地址:https://blog.csdn.net/small__snail__5/article/details/88547329 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:自定义一键创建controller,service,serviceImpl,mapper
下一篇:在创建数据库数据结构对应的pojo类时简单的正则保留数据库字段

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月05日 02时56分20秒