2 ghost feeling Ghost_Feeling 于 2016.03.17 21:55 提问

C#多线程的作用是啥?

刚工作没多久,在学校接触的都是普通代码操作,感觉写出来的代码执行效率好慢。于是想到了多线程,但是对于多线程还是半懂不懂,想找人帮忙梳理一下。
我对于多线程的理解是这样的,比如我现在代码的功能是操作一个word模板,模板里有多个表,每个表都需要遍历循环操作每个单元格。按照普通代码操作是循环遍历完一个表之后才能操作下一个表,而多线程的作用则是创建多个线程,每个线程同步循环遍历一个或多个表,在硬件设备支持的条件下,有多少个线程就相当于提高了多少倍的执行效率。
不知道这样的理解是对是错,一样有人帮忙解答一下!

2个回答

tmgfdzh
tmgfdzh   2016.03.17 22:54
已采纳

可以这么理解, 但是 在做异步处理时, 有时会出现资源冲突,比如说, 你说遍历表的时候,如果这个文件被之前的程序打开了, 那你新开的线程就无法再操作而报异常。
所以多线程并不是很有效率的办法,提高系统的效率要从你的算法入手,先对算法进行改进,比如在做大数据时, 可以考虑数据的压缩存储。

cmccmz
cmccmz   2016.03.18 10:18

多线程的好处是可以有效防止程序假死,看你怎么去运用。好多winform的程序是不允许跨线程访问的,要进行设置才行,但这样带来的负面就是安全问题,程序有可能会出现一些莫名的异常。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
RACMulticastConnection使用简介
RACMulticastConnection 当一个信号,被多次订阅时,为了保证创建信号时,避免多次调用创建信号中的block,造成副作用,可以使用该类处理。
JSF是什么。作用是啥
jsf是一种web框架,其实我也没有用过,这是我很久之前在网上看到的一种框架,当时大致简单的了解一下 jsf常用来和struts对比,struts是一种mvc框架,jsf是一种事件驱动的框架。 在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为appl
泛型的意义和作用是啥?
简单的说,意义和作用有:   类型的参数化,就是可以把类型像方法的参数那样传递。这一点意义非凡。   泛型使编译器可以在编译期间对类型进行检查以提高类型安全,减少运行时由于对象类型不匹配引发的异常。   泛型方法,算法的复用。蛮神奇的。 想要理解为什么引入泛型,就要知道没有泛型的麻烦。   我们知道现在的程序开发都是面向对象了,所以程序里会有很多各种类型的对象,对象多了肯定需要有某种类型
Java freemarker-2.3.15.jar的作用是啥?
FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。  FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写  FreeMarker被设计用来生成HTML Web页面,特别是
java 和 Flex 之间的Socket通信
<br />示例:并采用了amf二进制压缩的传输方式。<br />flex端代码:<br /><?xml version="1.0" encoding="utf-8"?><br /><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" <br />      xmlns:s="library://ns.adobe.com/flex/spark" <br />      xmlns:mx="library://ns.adobe.com/flex/mx"
BaseAdapter中getView()方法详解
上一篇文章中关于优化ListView(使用BaseAdapter)的例子中,getView()这个方法解释的不是很清楚。这次单独写一篇详细解释一下getView方法。 官方API中关于getView的解释 public abstract View getView (int position, View convertView, ViewGroup parent)    
java多线程(四)关键字volatile
关键字volatile的主要作用是使变量在多线程间可见。       解决异步死循环       如下代码       public class RunThread extends Thread { //volatile private boolean isRunning=true; private boolean isRunning=true; public boolean
词法分析的各类用途1
词法分析的各类用途1:单独或连续的一段空白(包括一个或多个空格、制表、换行组成的空白)都替换成一个空格
spring-dao.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:
Java中,logger.debuge是什么意思?有什么作用?
简单的说,就是配合log的等级过滤输出 比如,你在开发的时候,要验证一个方法有没有被调用到,为了方便调试,通常会在这个方法开始的时候加一些system.out。但是项目真正发布的时候这些代码通常是要移除掉的,所以通常更建议用logger来记录 所以你可能会加logger.debug。 为什么是debug而不是info error或者其他呢?因为通常项目发布的时候都会把日志等级设置为error