2009年暑期实习生活总结(一)

来源:互联网 发布:mac怎么连接电视 编辑:程序博客网 时间:2024/05/21 10:56

时间荏苒,暑期的实习生活已经结束。正如秋天的植物一样,自己收获的心田也是沉甸甸的,有一种丰收的喜悦。无论是从心力路程还是到技术提升,这对自己来说都是一个很好的社会实践。接下来的几篇文章是我从中进行的社会实践总结:

一是线程的基本概念

1、  进程

通俗的讲,就是运行一个应用程序时所占用的内存和资源。

2、  线程

线程是一个进程中的不同的数据流,一个进程中包含多个线程。线程是处理器分配时间的最小单元。

3、  多线程

一个进程中包含多个执行流,即在一个程序中允许执行多个线程执行多个执行流。

4、  采用多线程的条件

需要与用户进行交互

需要尽可能短的时间内对用户的操作作出反应

提高运行时的时间效率

5、多线程可以完成的任务包括

通过网络与 Web 服务器和数据库进行通信。

执行占用大量时间的操作。

区分具有不同优先级的任务。例如,高优先级线程管理时间关键的任务,低优先级线程执行其他任务。

使用户界面可以在将时间分配给后台任务时仍能快速做出响应。

6、多线程中的问题

采用多线程需要协调共享资源、多个线程之间的关系

过多的线程在运行中容易产生Bug

多线程在线程的跟踪和销毁时需要资源

例子:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading;

 

namespace ThreadTest

{

    class Program

    {

        static void Main(string[] args)

        {

            Thread.CurrentThread.Name = "CurrentThread";

            Console.WriteLine(Thread .CurrentThread .Name );

            Console.ReadKey();

 

        }

    }

}

二是线程的控制

1、  线程位于System.Thread命名空间之下,线程的初始化是通过ThreadStart委托来实现的。

2、  每一个线程都需要用Main函数作为线程的入口点。前台线程关闭后,所有的后台线程都将无条件的关闭。

3、  操纵Thread对象的方法主要有以下几个

Thread.Start()

Thread.Sleep()

Thread.Abort()

Thread.Join()

4、  线程的其他属性总结

Thread.Priority其中一共有六个值可供选择:

HighestAboveNormalNormalBelowNormalLowest

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading;

 

namespace StartThread

{

    class Program

    {

        public class Alpha

        {

            public void Beta()

            {

                while (true)

                {

                    Console.WriteLine("Alpha.Beta is running in its own threading.");

                }

            }

        }

        static void Main(string[] args)

        {

            Console.WriteLine("start/Stop Thread.");

            Alpha alpha = new Alpha();

            Thread oThread = new Thread(new ThreadStart(alpha.Beta));

            oThread.Start();

            while (!oThread.IsAlive)

                Thread.Sleep(1);

            oThread.Abort();

            oThread.Join();

            Console.ReadLine();

            Console.WriteLine("Alpha has been finished.");

            try

            {

                Console.WriteLine("try to restart the Beta thread ");

                oThread.Start();

            }

            catch (ThreadStateException ex)

            {

                Console.Write("ThreadStateException trying to restart Alpha.Beta. ");

                Console.WriteLine("Expected since aborted threads cannot be restarted.");

                Console.ReadLine();

 

            }

       

        }

    }

}