实用线程例子

本文介绍了一个用于从旧CMS系统定期迁移数据到新系统的Java线程实现方案。该方案通过一个可启动和停止的后台线程周期性地执行数据迁移任务,并记录操作日志。文中提供的代码示例展示了如何控制线程的运行状态及异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.css.dds.olddoctonewdoc;

import com.css.log.Logger;

public class TransThread implements Runnable
{
 static Logger log = Logger.getLogger(TransThread.class) ;
  /** 线程休眠时间间隔*/
    static final long SLEEP_TIME = 5*1000 ;

    boolean threadNotStopped = true; //线程停止标志位

    //int i = 0 ;

    Thread mainThread = null;

    private static TransThread hos = null;

    public void startThread()
    {
        mainThread = new Thread(this);
        threadNotStopped = true;
        mainThread.start();
      }

      public void stopThread()
      {
        threadNotStopped = false;
        hos = null;
      }

    public void run ()
    {
        while (threadNotStopped)
        {
            try
            {
             log.info("BEGIN TRANS:") ;
                DocTrans.transCMS (2) ;
                log.info("END TRANS!") ;
              
            }
            catch (Throwable _t)
            {
             System.out.println("出错了");
             log.error(_t) ;
            }
           
            try
            {
             Thread.sleep (SLEEP_TIME) ;
            }
            catch (Throwable _t)
            {
             log.error(_t) ;
            }
         }
    }

    public static TransThread getInstance()
    {
        return hos ;
      }

    public static void startScan ()
    {
        if (hos == null)
        {
            hos = new TransThread();
            hos.startThread () ;
        }
        log.info(new java.util.Date() + " 民族旧CMS导入程序启动");
    }

    public static void stopScan ()
    {
        if (hos != null)
        {
            hos.stopThread () ;
        }

        log.info(new java.util.Date() + " 民族旧CMS导入程序关闭");
    }

    public static void main (String[] args)
    {
        startScan () ;
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值