package thread;
import java.util.concurrent.TimeUnit;
/**
*
*/
public class ThreadStartAndStopTest {
/**
*
* @param args
*/
public static void main(String[] args) {
WorkScheduler.getIns().start();
try {
TimeUnit.MILLISECONDS.sleep(5000);
} catch (InterruptedException e) {
}
WorkScheduler.getIns().stop();
}
}
package thread;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* 如何控制线程的启动和结束
*/
public class WorkScheduler {
static private Logger logger = LoggerFactory.getLogger(WorkScheduler.class);
private WorkScheduler() {
}
static WorkScheduler threadStartAndStop = new WorkScheduler();
public static WorkScheduler getIns() {
return threadStartAndStop;
}
private Thread workThread;
private Thread workThread1;
private WorkTask workTask;
public void start() {
workTask = new WorkTask();
workThread = new Thread(workTask);
workThread1 = new Thread(workTask);
workThread.start();
workThread1.start();
}
public void stop() {
logger.info("receive xinhao to stop");
if (workThread != null) {
workTask.stop();
try {
workThread.join();
workThread1.join();
} catch (InterruptedException e) {
}
workTask = null;
workThread = null;
workThread1 = null;
}
}
}
package thread;
/**
* 工作线程任务
*/
public class WorkTask implements Runnable{
private volatile boolean stop=false;
/**
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
while(true){
if(stop){
System.out.println("receive signal to stop");
return;
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
System.out.println(Thread.currentThread().getName()+": 11111");
}
}
public void stop(){
stop=true;
}
}