uright

导航

 

记得在刚开始看MSDN时,上面写着**类,**方法是否线程安全,说的就是当多个线程并发使用该对象时,对象的成员是否总是维持其有效的状态。比如 在对某些数据库,文件的存取操作中,是不支持并发处理的,这样我们就必须对该方法进行串行化,加监视锁或代码同步……

首先给一个比较典型的多线程例子

 

using System;
using System.Data;
using System.Threading;

namespace TestProject
{

    
public class testThread
    
{
        
        
public static void Main()
        
{
            Sum _sum
=new Sum(1,3);
            ThreadStart _work1 
= new ThreadStart(_sum.Add);
            Thread _t1 
= new Thread(_work1);
            _t1.Start();
            
for(int i=0;i<10;i++)
            
{
                Thread.Sleep(
200);
                Console.Write(
".");
            }

            _t1.Join();
            Console.WriteLine(_sum.RESULT);
            Console.ReadLine();
        }

    }


    
public class Sum
    
{
        
int x,y;
        
public Sum(int a,int b)
        
{
            
this.x=a;
            
this.y=b;
        }

        
int result;
        
public int RESULT
        
{
            
get 
            
{
                
return result;
            }

        }

        
public void Add()
        
{
            Console.WriteLine(
"star add");
            
for(int i=0;i<=10;i++)
            
{
                Thread.Sleep(
500);
                Console.Write(
"+");
            }

            result
=x+y;
            Console.WriteLine(
"end add");
        }

    }

}


运行的结果: 
 
 将线程委托,数据封装在单个类中
在线程启动后,我们调用Join来阻塞当前线程,直至Sum.Add()方法的线程被终止;如果我们将Join屏蔽掉,运行结果就是:


当主线程执行完后,如不阻塞,会直接运行Sum.Add()方法,Result结果为0,之后Add()继续执行……
posted on 2005-03-21 15:24  uright  阅读(2710)  评论(0)    收藏  举报