多线程本地磁盘写操作

时间:2019-12-25 07:39来源: 操作系统
各位大大,请教个问题,一个程序,需要快速保存4个传感器的数据到本地文件。如果我对每个传感器添加一个线程,这样使用4个线程来进行本地文件的写操作。这样会不会有什么问题

各位大大,请教个问题,一个程序,需要快速保存4个传感器的数据到本地文件。如果我对每个传感器添加一个线程,这样使用4个线程来进行本地文件的写操作。这样会不会有什么问题,多线程的磁盘写操作有什么需要注意的事项没?

1.内存溢出和内存泄漏有什么区别?何时会产生内存泄漏?内存优化有哪些方法?

内存溢出通俗理解就是软件(应用)运行需要的内存,超出了它可用的最大内存。
内存泄漏就是我们对某一内存空间的使用,使用完成后没有释放。
内存优化:Android中容易内存溢出的部分,就是图片的加载,我们可以使用图片的压缩(质量压缩,比例压缩)加上使用LruCache缓存的目的来控制图片所能够使用的内存。
还有对于比较耗资源的对象及时的关闭,例如Database Conn , 各种传感器 , Service 等等。

2.AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?

AsyncTask 运用的场景就是我们需要进行一些耗时的操作,耗时操作完成后更新主线程,或者在操作过程中对主线程的UI进行更新。
缺陷:AsyncTask中维护着一个长度为128的线程池,同时可以执行5个工作线程,还有一个缓冲队列,当线程池中已有128个线程,缓冲队列已满时,如果
此时向线程提交任务,将会抛出RejectedExecutionException。
解决:由一个控制线程来处理AsyncTask的调用判断线程池是否满了,如果满了则线程睡眠否则请求AsyncTask继续处理。

3.如果有个100M大的文件,需要上传至服务器中,而服务器form表单最大只能上传2M,可以用什么方法。

这个问题不是很明确我觉得,首先来说使用http协议上传数据,特别在android下,跟form没什么关系。传统的在web中,在form中写文件上传,其实浏览器所做
的就是将我们的数据进行解析组拼成字符串,以流的方式发送到服务器,且上传文件用的都是POST方式,POST方式对大小没什么限制。
回到题目,可以说假设每次真的只能上传2M,那么可能我们只能把文件截断,然后分别上传了。

4.缓存机制

优点:节省流量、提高用户体验。

编辑: 操作系统 本文来源:多线程本地磁盘写操作

关键词: