我明确的知道我想同步什么东西,我是想C#的线程如何能拥有自己的东西呢??就像Java那样要从线程类继承,然后每new出来一个对象都是线程对象,并且每个对象还可以有自己的字段,但是C#就不同了,如果是多个线程执行的是同一个对象的同一个方法,那么这些线程是共享这个对象的属性,就像我的第二段测试程序那样。如果每个线程都对应一个不同的对象(同一个类new出来的)的同一个方法,那么这些线程才能算是通过那个对象间接拥有自己的属性。

解决方案 »

  1.   

    你这几天都在问关于线程的问题,线程和面对对象是没有对应关系的,对于线程来说,没有属于自己的资源,想想线程的定义,线程其实施不拥有资源的。
    任何的对象,只要线程能够拿到引用就可以使用,java的线程也没有什么属于自己的东西,如果另一个线程能够拿到这个线程对象的引用,照样可以使用这个线程内的属性,他唯一需要考虑的是这个属性的修饰符,也就是public,private,protected这些。要记住资源是属于当前进程的东西。
    对于两个不同的线程,只要有可能同时访问同一个资源,那么就需要考虑同步
    你说的java的例子是因为大部分得时候一个线程不会拿到另外一个线程类的实例,也就是在编程上约定了两个线程逻辑分隔,但在物理上,这两个线程还是处在相同的地址空间,他们之间是可以相互访问的,因此,不能说java中的thread类子类中的属性是属于哪个线程的。
    你先看看定义,就会明白线程不能拥有自己的东西,只能是你自己在逻辑上分隔。