`
conkeyn
  • 浏览: 1535755 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

多线程方式增加数据

    博客分类:
  • Java
阅读更多
import java.io.IOException;
import java.sql.SQLException;
import java.text.NumberFormat;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class TimeDimesion
{

    public static void main(String[] args) throws IOException, SQLException
    {
        int threadCount = 10;
        int totalSeconds = 3600 * 24;
        int pieceSeconds = totalSeconds / threadCount;
        int startTime = 0;

        int endTime = 0;
        for (int i = 0; i < threadCount; i++)
        {
            if (i < 9)
            {
                startTime = pieceSeconds * i;
                endTime = pieceSeconds * (i + 1) - 1;
                Thread timeDimesionThread = new Thread(new TimeDimesionThread(
                        startTime, endTime));
                timeDimesionThread.start();
            } else
            {
                startTime = pieceSeconds * i;
                endTime = totalSeconds - 1;
                Thread timeDimesionThread = new Thread(new TimeDimesionThread(
                        startTime, endTime));
                timeDimesionThread.start();
            }
        }
    }

    static class TimeDimesionThread implements Runnable
    {

        // 起始时间点
        // 用于分使用。
        private int        startTime = 0;

        private int        endTime   = 0;

        private int        hour      = 0;
        private int        minute    = 0;
        private int        secod     = 0;

        private Connection conn      = null;

        private Statement  stmt      = null;

        public TimeDimesionThread(int startTime, int endTime)
                throws IOException, SQLException
        {
            this.conn = DBConnection.getConnectionInstance();
            this.stmt = (Statement) conn.createStatement();
            this.startTime = startTime;
            this.endTime = endTime;
        }

        @Override
        public void run()
        {
            int i = startTime;
            hour = (int) (startTime / 3600);
            int left_seconds = startTime % 3600;
            minute = (int) (left_seconds / 60);
            secod = left_seconds % 60;
            NumberFormat numberFormat = NumberFormat.getNumberInstance();
            numberFormat.setMaximumIntegerDigits(2);
            numberFormat.setMinimumIntegerDigits(2);
            String sql = "";
            do
            {
                secod++;
                if (secod > 0 && secod % 60 == 0)
                {
                    minute++;
                    secod = 0;
                }
                if (minute > 0 && minute % 60 == 0)
                {
                    hour++;
                    minute = 0;
                }
                sql = "REPLACE INTO `dim_time` (`time_key`, `time_value`, `time_hour`, `time_minute`, `time_second`) VALUES('" +
                        numberFormat.format(hour) +
                        numberFormat.format(minute) +
                        numberFormat.format(secod) +
                        "','" +
                        numberFormat.format(hour) +
                        ":" +
                        numberFormat.format(minute) +
                        ":" +
                        numberFormat.format(secod) +
                        "'," +
                        numberFormat.format(hour) +
                        "," +
                        numberFormat.format(minute) +
                        "," +
                        numberFormat.format(secod) + ");\n";
                try
                {
                    stmt.executeUpdate(sql);
                } catch (SQLException e)
                {
                    e.printStackTrace();
                }
                System.out.println(numberFormat.format(hour) + ":" +
                        numberFormat.format(minute) + ":" +
                        numberFormat.format(secod));
                i++;
            } while (i <= endTime);
        }

        @Override
        protected void finalize() throws Throwable
        {
            this.stmt.close();
            this.conn.close();
            super.finalize();
        }
    }
}

 表结构

CREATE TABLE `dim_time` (
  `time_key` mediumint(8) unsigned NOT NULL COMMENT '时间ID',
  `time_value` time NOT NULL COMMENT '时间值',
  `time_hour` tinyint(3) unsigned NOT NULL COMMENT '小时',
  `time_minute` tinyint(3) unsigned NOT NULL COMMENT '分钟',
  `time_second` tinyint(3) unsigned NOT NULL COMMENT '秒',
  PRIMARY KEY  (`time_key`)
) DEFAULT CHARSET=utf8 COMMENT='时间表'
分享到:
评论

相关推荐

    java多线程分页查询

    通过对上述代码的分析可以看出,该方案充分利用了Java多线程技术的优势,通过预加载前一页的数据,大大提高了后续请求的响应速度。然而,在实际应用中还需要注意以下几点: - **线程池管理**:频繁地创建新线程可能...

    多线程_按键精灵经典多线程操作_

    在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个独立的任务,从而提高计算机系统的效率和响应性。特别是在自动化工具如“按键精灵”中,多线程的应用能够显著提升其性能和实用性。 标题“多线程_...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行

    2. **线程同步与互斥**:在多线程环境中,确保数据的一致性和完整性至关重要。线程同步可以通过`Mutex`、`Monitor`、`Semaphore`、`ReaderWriterLockSlim`等工具实现。例如,`Mutex`可以实现全局资源的独占访问,...

    采用全局变量方式实现多线程的通信

    然而,全局变量并不是多线程通信的理想解决方案,因为它可能导致代码难以理解和维护,以及增加了数据竞争的风险。更推荐的做法是使用线程安全的数据结构,如`CWinThread`类的`m_pumpMsg`成员,或者使用`ATL`库提供的...

    VB 多线程 多个参数传入

    在VB(Visual Basic)编程中,多线程是一种常见的技术,用于提高程序的执行效率,尤其是在处理大量数据或需要同时进行多个...记住,虽然多线程可以提高效率,但也增加了复杂性和潜在的问题,合理的设计和测试是关键。

    深入浅出 Java 多线程.pdf

    3. 数据处理编程:多线程编程可以用于数据处理编程,以提高数据处理的效率和速度。 五、多线程编程的实现方法 多线程编程可以通过以下几种方法来实现: 1.继承 Thread 类:可以继承 Thread 类来实现多线程编程。 ...

    多线程压缩zlib

    本项目涉及的主题是“多线程压缩zlib”,它利用C语言编写,适用于gcc编译环境,旨在通过多线程的方式提高zlib压缩库的效率。 Zlib是一个广泛使用的开源压缩库,它提供了各种压缩和解压缩算法,如DEFLATE,被广泛...

    多线程并行运算

    本篇将深入探讨多线程的概念、优势、实现方式以及如何应用于查找运算。 一、多线程概念 多线程是指在一个应用程序中同时运行多个独立的执行线程。每个线程都包含有自己的程序计数器、系统寄存器和栈,它们可以并发...

    vb多线程控件能实现简单的多线程

    VB中的多线程主要通过两种方式实现:MTA(多线程 apartments)和STA(单线程 apartments)。VB6默认使用STA模型,这意味着每个窗口对象(如控件)都在一个单独的线程中运行。而MTA则允许多个线程共享同一公寓,适合...

    C#实现支持断点续传多线程下载客户端工具类

    然而,为了实现断点续传和多线程下载,我们需要更深入地控制HTTP请求和响应,以及处理下载数据的存储。 首先,我们注意到类中有一个`DownLoadState`结构,它用于记录下载过程中的关键信息。这个结构包含文件名、...

    C#队列Queue多线程用法实例

    队列在多线程环境下常常用于任务调度、消息传递等场景,因为它们能有效地管理和同步数据访问。本实例将详细讲解如何在多线程中使用C#的Queue类。 首先,我们创建一个队列实例,通过`new Queue()`来指定存储的数据...

    java多线程进度条

    总之,实现Java多线程进度条涉及线程同步、共享数据更新以及UI更新的协调。理解这些核心概念,并根据具体需求选择合适的方法,是构建高效、用户友好进度条的关键。在ProgressTest这个示例项目中,你可能会找到更多...

    windows环境下的多线程编程原理与应用

    在Windows环境下进行多线程编程是一项复杂而关键的技术,它涉及到操作系统如何管理和调度并发执行的任务。多线程允许一个应用程序同时执行多个独立的代码段,从而提高程序的响应性和效率,尤其是在现代多核处理器...

    Core Data多线程大量数据同步

    ### Core Data 多线程大量数据同步详解 #### 前言 在iOS开发中,Core Data 是一种广泛使用的持久层框架,它提供了一种面向对象的方式来存储和管理应用程序的数据。随着应用程序复杂度的增加,如何高效、稳定地管理...

    05.多线程数据保护(安全队列2

    在多线程编程中,数据保护是至关重要的一个环节,特别是在并发环境中,多个线程可能会同时访问和修改共享数据,这可能导致数据不一致、死锁等问题。本节将深入探讨如何利用安全队列来实现多线程之间的数据保护,确保...

    delphi多线程 冒泡排序,选择排序,快速排序

    在IT领域,多线程是一种...然而,多线程编程也增加了复杂性,需要谨慎处理线程同步、通信和异常等问题,确保程序的稳定性和正确性。在Delphi中,理解和掌握多线程技术,能够帮助开发者编写出更加高效、灵活的应用程序。

    英特尔多核多线程技术

    - **大数据处理**:大数据分析和机器学习算法需要处理海量数据,多核多线程处理器能够有效加速这一过程。 #### 四、多核多线程技术的发展历程 多核多线程技术的发展离不开计算机硬件的进步,尤其是微处理器技术的...

    c++实现多线程同步

    然而,多线程环境下可能会遇到数据竞争问题,即多个线程同时访问并修改同一块数据。为了解决这个问题,我们可以使用线程同步机制,其中一种常见方法是使用信号量(Semaphore)。 信号量是一种同步原语,用于控制对...

Global site tag (gtag.js) - Google Analytics