2 u010468993 u010468993 于 2015.06.15 16:15 提问

请教java线程使用的一个问题

在web项目中。
假设在页面上点了A按钮,然后后台某种需求,新建了A线程,干某件事。
过了一会儿。我再点A按钮,又会启动一个新线程,干同一件事。
请问一下,这样做好不好?
或者说在后面点A按钮的时候,直接使用A线程干事而不是重新创建。
请问这样做行不行?行的话怎么弄。
谢谢

7个回答

gamefinity
gamefinity   Rxr 2015.06.15 16:37
已采纳

看你的线程是干嘛用的。
如果你的线程只有一个单一的事件待解决(比如说要执行一个大量计算的函数,但不想阻塞主界面),这样做可以,但是这时候可能使用线程池更适合。
如果你的线程是要一直活着并长期处理某个任务的话(比如说等待一个socket的连接,并且不知道连接什么时候会来),这样做不妥,应该和原线程通讯,把新的任务加进去。

gamefinity
gamefinity 回复ahuwangqun: 说实话,java我不懂。不过道理是一样的,单讲理论是可以的:)。你可以看看这个http://www.oschina.net/question/565065_86540
2 年多之前 回复
u010468993
u010468993 像你说的第一种情况。怎么弄线程池。
2 年多之前 回复
u010186896
u010186896   2015.06.15 16:23

那看你两次的点击是因为延迟卡顿导致用户再次点击,还是本事就有两个相同的操作请求,而去点击的

u010186896
u010186896   2015.06.15 16:23

那看你两次的点击是因为延迟卡顿导致用户再次点击,还是本事就有两个相同的操作请求,而去点击的

u010468993
u010468993   2015.06.15 16:34

两个相同的请求。排除卡顿的情况,可能上午10点点一次。下午4点点一次。可能隔个5,6天再点一次。

tongyi55555
tongyi55555   2015.06.15 17:01

关键问题就是你干的什么事情,不同的事情需要不同的情况处理。

u010468993
u010468993 楼上(知常日明)说的第一种情况。请问怎么弄。
2 年多之前 回复
a415613911
a415613911   2015.06.16 17:44

点击频率不高且线程内部逻辑不复杂可以较快执行完的,没必要修改,每次new一个线程就行,这样对服务器不会有压力
如果是点击频率很高,或者线程生命周期很长,那就需要根据业务需求调整。
非阻塞要求的,最好使用线程池,节省线程开销;阻塞要求的,可以使用单一线程,线程内加锁,执行完释放。

dominating413421391
dominating413421391   2015.06.17 13:50

前后两次启动同一个线程可能会对当前操作造成干扰。可以采用多个线程处理或重新启动

Csdn user default icon
上传中...
上传图片
插入图片