gpt4 book ai didi

java - 事件方法中的线程对象 : use class member or create local object?

转载 作者:行者123 更新时间:2023-11-29 06:00:53 25 4
gpt4 key购买 nike

我有一个带有经常调用的事件方法的类。假设方法名称是:onClicked。在方法内部,我会创建一个线程来做一些事情。

首先,我尝试在事件方法中创建一个线程对象。代码是这样的:

public class MyService {

//Event method
public void onClick() {
new Thread(new Runnable() {

@Override
public void run() {
// do some stuff here
}
}).start();
}
}

但由于 onClick 会经常被调用,我担心每次调用事件方法时创建的新线程对象是否会造成内存空间或性能问题?

或者,我可以像这样创建一个类成员线程解决方案:

public class MyService {
private Thread myThread;

//Event method
public void onClick() {
myThread = new Thread(new Runnable() {

@Override
public void run() {
// do some stuff here
}
});
myThread.start();
}
}

那么哪个代码更好呢?第一还是第二?或者有其他更好的解决方案吗?

最佳答案

如果不在每个 OnClick() 上重新初始化您的线程,您就不能使用第二个代码。这是因为一旦 Thread 运行完毕,它就“死了”。因此,对 start() 的后续调用将失败并导致 IllegalThreadStateException

最好使用第一个代码,因为 GC 将在线程完成后将其删除。

关于java - 事件方法中的线程对象 : use class member or create local object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135069/

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