按钮控制java_java – 通过按钮控制线程

本文探讨了如何在Java中控制线程的运行状态,包括使用Thread.start()启动线程,通过设置内部状态变量实现线程的停止和暂停,并可能需要调用Thread.interrupt()处理阻塞方法。代码示例展示了如何实现复杂的线程控制逻辑,强调了在处理线程操作时的复杂性和注意事项。
摘要由CSDN通过智能技术生成

使用Thread.start()启动一个线程很简单.停止线程可以像设置在run方法中异步检查的标志一样简单,但可能需要包含对Thread.interrupt()的调用.暂停线程更有问题,但也可以使用一个标记来处理run方法而不是进程.这是一些(未经测试的)代码:

class MyThread extends Thread {

private final static int STATE_RUN = 0, STATE_PAUSE = 2, STATE_STOP = 3;

private int _state;

MyThread() {

_state = STATE_RUN;

}

public void run() {

int stateTemp;

synchronized(this) {

stateTemp = _state;

}

while (stateTemp != STATE_STOP) {

switch (stateTemp) {

case STATE_RUN:

// perform processing

break;

case STATE_PAUSE:

yield();

break;

}

synchronized(this) {

stateTemp = _state;

}

}

// cleanup

}

public synchronized void stop() {

_state = STATE_STOP;

// may need to call interrupt() if the processing calls blocking methods.

}

public synchronized void pause() {

_state = STATE_PAUSE;

// may need to call interrupt() if the processing calls blocking methods.

// perhaps set priority very low with setPriority(MIN_PRIORITY);

}

public synchronized void unpause() {

_state = STATE_RUN;

// perhaps restore priority with setPriority(somePriority);

// may need to re-establish any blocked calls interrupted by pause()

}

}

正如您所看到的,它可以很快变得复杂,具体取决于您在线程中所做的事情.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值