gpt4 book ai didi

java - 当一个方法被调用时,c#和java中哪个线程会运行?

转载 作者:行者123 更新时间:2023-12-01 12:30:49 24 4
gpt4 key购买 nike

每个人都知道我们正在使用多线程平台,并且我们正在开发多线程应用程序。顺便说一句,我无法识别线程问题。当我调用静态方法(即在另一个类中)时,哪个线程将运行? gui 线程是否执行作业并运行方法? IE:(我将给出vb代码示例。逻辑与java相同。)

Private Sub runValuesTest_Click(sender As System.Object, e As System.EventArgs) Handles RunValuesTest.Click
DummyClass.Instance.DoJob()
End sub()

这是vb语法,但没关系。主要逻辑与C#和Java相同。当我单击按钮时,会运行新线程吗?或者gui线程去工作?

如果将运行新线程,我们为什么以及何时在工作中使用新线程?

如果 gui 线程消失,我会看到程序中很多时候有多个线程运行。程序中的线程怎么可能不同?为什么以及何时会以某种方式发生线程异常?例如:我正在用这个方法进行文件操作:(这可能是不同的问题)

Private _file As System.IO.StreamWriter
Private Sub runValuesTest_Click(sender As System.Object, e As System.EventArgs) Handles RunValuesTest.Click
If Not Directory.Exists("GraphXml") Then
Directory.CreateDirectory("GraphXml")
End If

_fileName = "GraphXml\Graph_" & txtName & ".xml"

_file = My.Computer.FileSystem.OpenTextFileWriter(_fileName, False)

_file.WriteLine("<?xml version=""1.0"" encoding=""UTF-8""?>")

_file.WriteLine("<n0>")

DepthFirstSearch(StaticService.AllNodes(0))

_file.WriteLine("</n0>")
_file.Close()
_file.Dispose()
End Sub

当我点击得太快(每两秒点击 1 次)时,它会给出错误“另一个进程使用文件”。

如果这个 gui 线程,为什么会出错?

如果是新线程,为什么我们要在按钮点击方法中做一些类似于gui操作的工作。 ? (大家都知道,要进行 gui 操作,我们要使用 gui 线程,对吗?)

第二个代码部分可能是不同的问题,但我只是想学习.net 的 THREAD 背后的逻辑(我认为该逻​​辑对于 java 也有效)

谢谢

编辑:这可能与 JAVA 无关。虽然我给出了 vb 代码示例,但我添加了 java 标签,因为我认为逻辑是相同的。

最佳答案

When i call a static method (that is in another class.) , which thread will be run ?

不调用方法。你写代码。 线程调用方法。线程是执行代码的代理。每个程序至少有一个线程。当线程调用方法(静态或非静态)时,该方法将在调用它的线程中调用。

When i click the button, will be new thread run ? Or gui thread go job ?

这是一个关于 Visual Basic 的问题。我不懂 Visual Basic,但许多 GUI 框架都有一个“事件处理程序线程”。当您单击按钮时,事件处理程序线程中运行的框架代码将读取该事件。框架会确定哪个窗口、哪个小部件等,然后如果您的代码已注册处理程序,则事件处理程序线程将调用您的处理程序方法。

to do gui operations , we want to use gui thread, am i right?)

许多 GUI 框架都是单线程的,这是有充分理由的。 https://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html但同样,如果您问的是 Visual Basic,那是我不知道的事情。

how can threads be different in a program?

why and when thread exceptions occurs somehow ?

...?

您要么需要在尝试用英语提问之前学习更多英语,要么需要在尝试询问有关线程的问题之前了解有关线程的更多信息(完成一些教程)。你的很多问题似乎没有多大意义。

关于java - 当一个方法被调用时,c#和java中哪个线程会运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25929920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com