1.在一个类A中定义个私有变量a,再定义个方法,在该方法中再定义一个对象A test=new A();
为什么这个地方的test能访问私有变量a呢?对对象test来说a不是私有的吗?是不能访问的吗?
2.在一个方法中定义一个对象,并在该方法中为该对象加锁,在锁的生命周期中在调用自己这个方法,会产生死锁吗
3.在一个主线程中定义一个从线程,关闭主线程会关闭从线程吗?或者是在主线程中新建两个线程
a,b 线程a与线程b是没有什么关系的,是吗?1.是可以访问私有变量的
2.不会产生死锁
3.主线程和从线程是有关系的。从线程与从线程之间是没有什么关系的c#
为什么这个地方的test能访问私有变量a呢?对对象test来说a不是私有的吗?是不能访问的吗?
2.在一个方法中定义一个对象,并在该方法中为该对象加锁,在锁的生命周期中在调用自己这个方法,会产生死锁吗
3.在一个主线程中定义一个从线程,关闭主线程会关闭从线程吗?或者是在主线程中新建两个线程
a,b 线程a与线程b是没有什么关系的,是吗?1.是可以访问私有变量的
2.不会产生死锁
3.主线程和从线程是有关系的。从线程与从线程之间是没有什么关系的c#
解决方案 »
- vs2012 创建SQL Serve 数据库的一个问题,急求
- 在函数中使某一控件的事件触发,该怎么做?
- 如何DATAGRID中加入的自定义控件?
- 怎么用visual studio创建日志???
- 简单问题
- 有没有高手知道,点击按钮后,弹出文本框的格式选择(如字体、字号、颜色等)的对话框是怎么做的?有没有源码参考一下!谢谢
- 关于C#WinForm窗体程序如何连接显示在LED大屏幕
- 我编的一个学习小程序,需要用到 Webbrowser显示网页,但是显示乱码
- 文件下载
- C# avicap32摄像头录像界面卡死问题(8年悬而未决)
- C#中16进制FBA1转换成10进制是-1119,是怎么换算的
- 像“A=a&B=b&C=c”这种字符串怎么分解
A test=new A()
B test2=new B()A里面的a跟B里面的a是两个东西,虽然名字都一样
学生类实例化:
学生 张三 = new 学生();
于是张三具有了学号这个变量.2.3不会 我也是小白.
{
public static void Display()
{
Console.WriteLine("A");
}
private string strname;
public string StrName
{
get { return strname; }
set { strname = value; }
}
public A(string name)
{
this.strname = name;
}
public void print()
{
A gg = new A("sfd");
gg.strname="dfdf";//这个地方为什么能访问私有变量?
this.strname = "dfdf";//这个this对象与上面的gg对象有什么关系呢?
}
这是第一个问题的代码
}
{
public static void Display()
{
Console.WriteLine("A");
}
private string strname;
public string StrName
{
get { return strname; }
set { strname = value; }
}
public A(string name)
{
this.strname = name;
}
public void print()
{
A gg = new A("sfd");
gg.strname="dfdf";//这个地方为什么能访问私有变量?
this.strname = "dfdf";//这个this对象与上面的gg对象有什么关系呢?
}
这是第一个问题的代码
}
public void print()
{
A gg = new A("sfd");
gg.strname="dfdf";//私有变量在类内部都可以访问。
//这个this是你在外部方法new A的时候的那个对象,而gg是你在在new A后的对象调用的print方法的时候重新new A的对象,所以,当你调用了print方法,你new了两个A,this就是调用print方法的那个对象
this.strname = "dfdf";// }2,可能你的问题我理解的不是很清楚。不过锁是针对多个线程争夺资源而设定的,如果你是单个线程,不牵扯死锁的问题,如果多个线程同时遇见lock的对象正在使用,会等正在使用的线程释放lock资源后,才会进行访问,但如果正在使用的线程一直没有给等待线程发送信号释放资源,此时,就可能造成死锁,不过,不只这只是造成死锁的一种情况。
3,线程是独立的。
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
这是第二个问题的代码,死锁不会产生,i变为一个对象的话也不会产生死锁。
解释是 msdn上 线程可以递归拥有同步块 只是解释的不太清楚,现在想问清楚些~~呵呵
我现在的理解是:进程创建(分配资源),同时创建一个主线程,主线程调用进程中的资源,在主线程中建一个次线程,次线程也是调用进程中的资源,当主线程关闭的时候,进程关闭,windows系统释放非配给该进程中的资源,则次线程无法调用资源,也会随之关闭。
假设线程之间产生了死锁,则无法关闭。这句我不知道是不是正确的
我这样理解可以吗?
在控制台程序里,新建线程调用,如果控制台程序不添加Console.Read();之类的方法等待用户输入,会直接结束的。任务管理器中监视刚才运行的程序进程,进程还在的话,就说明各个线程是无相独立的。事实上,只要有一个线程不结束,进程就不会结束,各个线程所拥有的资源是独立的。你把进程理解为多个线程的集合就可以了,集合数量为0才会结束。当然,有一种辅助线程,也叫后台线程,是依赖创建它的线程的。任何委托的BeginInvoke创建的都是这类辅助线程,无法单独存在,主线程必须在运行。Thread类也有一个IsBackground,设置是否为后台线程,默认值为false。
{
private string a {set; }
public Program()
{
a = "0.0";
}
static void Main(string[] args)
{
Program c = new Program();
Console.WriteLine(c.a);//这里c.就访问不到了 - -
Console.Read();
}
public string b()
{
return a;
}
}