这些是我上周总结的一些东西,分享给你参考下:
- 多线程:是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务(代码),也就是说允许单个程序创建多个并行的线程来完成各自的任务。CPU在多个线程之间来回切换执行操作,(这就是所谓的“并发”)
- 创建线程之前,我们必须为该线程定义一个方法,这个方法中的代码就是该线程运行所要执行的代码。
- 线程在启动时会通过委托调用该方法。(在线程启动的时候,会调用传过来的委托,委托就会执行相应的方法,实现线程执行方法。 微软在写线程这个类的时候并不知道我们将要执行什么代码,所以定义了委托要求我们在创建线程的时候传一个方法进去,告诉线程所要执行的方法)
-
- 为什么要使用多线程?
- 多线程应用程序将程序划分为多个独立的任务,因此可以在一些方面显著的提高性能:
- 、使程序的响应速度更快,因为用户界面可以在进行其它工作的同时一直处于活动状态(不会使用主界面处于无响应的状态);
- 、当前线程没有需要进行处理的任务时,可以将处理时间器让给其它任务。
- 、占用大量处理时间的任务可以定期将处理器时间让给其它任务。
- 、可以随时停止任务。
- 、可以分别设置个个任务的优先级以优化性能。
-
- 创建多线程的取决因素(最适合采用多线程进行处理的情况):
- 、耗时或大量占用处理器的任务阻塞用户界面操作。
- 、各任务必须等待外部资源(如远程文件或Internet连接)
- 多线程的缺点:
- 、等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源,如打印机等。
- 、对线程进行管理要求额外的CPU开销。多线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内的每个元素。
- 、线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
- 、对公有变量的同时读写。当多个线程同时对公有变量进行写操作时,后一个线程往往会修改掉前一个线程存放的数据。从而使前一个线程的参数被修改;另外,当公用变量的读写操作是非原子性时,在不同的机器上,中断时的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误是程序无法预知的。
复制代码 |