//package com.jxy.marketall.utils;
//
//
//import com.jxy.common.core.utils.StringUtils;
//
//import com.jxy.marketall.Therad.TestThread;
//
//import java.util.concurrent.TimeUnit;
//
//
//
///**
// * @Description TODO
// * @Date 2022/6/21 18:34
// * @Author 杜懿
// */
////@Configuration
////@EnableScheduling
//
//public class TestTask {
//
//    /**某个连接实例的持续推送线程*/
//   private Thread thread;
//
//   private String userName;
//
//    private String message;
//
//    public TestTask(String userName) {
//        this.userName = userName;
//    }
//
//    /**
//     * 接受用户信息
//     * @param message
//     */
//    public void onMessage(String message) {
//        System.out.println("收到用户消息:"+userName+",报文:"+message);
//        //开启推送信息的线程
//
//        //判断用户是否已有线程在运行
//        if(StringUtils.isNotBlank(message)){
//            if(thread != null){
//                //用户目前有线程在执行任务，先停掉已有线程
//                stopPush();
//                System.out.println("收到消息后原有线程已停止");
//            }else {
//                System.out.println("用户"+userName+"当前没有线程在执行,即将开启新的线程");
//            }
//        }
//        //开启新任务的线程
//        startPush(message);
//        System.out.println("当前线程:"+thread.getName());
//        this.message = message;
//        //消息保存到数据库、redis
//        //if(StringUtils.isNotBlank(message)){
//        //
//        //}
//    }
//
//    /**
//     * 创建线程开始推送实时信息
//     * @param msg
//     */
//    private void startPush(String msg){
//        if (thread != null){//todo  解决this.thread始终为空的问题
//            System.out.println("线程已存在");
//            if(userName.equals(thread.getName())){
//                //如果存在同名线程则将其关闭
//                if(!thread.isInterrupted()){
//                    System.out.println("存在同名线程, 已在startPush方法中将其关闭");
//                    stopPush();
//                    System.out.println("在startPush方法中将原有线程关闭成功");
//                }
//            }
//        }
//        Thread newThread = new Thread(new TestThread(this, msg), userName);
//        thread = newThread; //todo 新建的线程没有赋值到thread上
//        System.out.println("为用户"+userName+"创建线程，线程名为："+ this.thread.getName());
//        thread.start();
//   }
//
//    /**
//     * 关闭线程 停止推送信息
//     */
//    private void stopPush() {
//        try {
//            if (thread != null) {
//
//                Thread.sleep(5);
//                thread.interrupt();
//                //this.thread.stop();
//                thread = null;
//                //System.out.println("用户连接已断开！");
//            }
//        } catch(Exception e) {
//            System.out.println("停止推送异常:"+e);
//        }
//    }
//
//    public static void main(String[] args) throws InterruptedException {
//
//        //模拟用户admin
//        TestTask testTask1 = new TestTask("admin");
//        //模拟用户dy
//        TestTask testTask2 = new TestTask("dy");
//
//        testTask1.onMessage("test");
//        TimeUnit.SECONDS.sleep(5);
//        testTask2.onMessage("test2");
//        TimeUnit.SECONDS.sleep(5);
//        testTask1.onMessage("111");
//    }
//
//}
