- 浏览: 140764 次
- 性别:
- 来自: 深圳
最新评论
-
wzk2111:
代码 可用,楼主的思路可以参考
javascript加密java解密 -
Imini123:
[align=center][color=red][/colo ...
freemarker实现通用分页,首页静态化,通用select,通用文章显示 -
igting:
js对+,@符号的加密应该有问题,java解密不对。
javascript加密java解密 -
Seanman:
初学freemarker,源码不全,不知道怎么用
freemarker实现通用分页,首页静态化,通用select,通用文章显示 -
无敌洋葱头:
目前这个只能对0-9 A-Z a-z加密,而且js还有问题。c ...
javascript加密java解密
package com.xxx.betcart.server.service.impl.threadmanager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 线程基本类 * * 记录线程开始时间/结束时间/ 线程名称/线程属性参数 * @project commonsTiger * @author alanpeng * @date 2011-1-7 * Copyright (C) 2010-2012 www.2caipiao.com Inc. All rights reserved. */ public abstract class BaseThread implements Runnable { private transient final Logger logger = LoggerFactory.getLogger(BaseThread.class); private Long startTime;//开始时间 private String threadName;//线程名字 private Long endTime;//结束时间 private Long removeDelay = 0l;//线程结束后多久移除管理,单位秒 private volatile boolean isRun;//线程是否运行中 /** * 只定义线程名, * 线程状态数据执行完成removeDelay秒后删除 * @param threadName * @param removeDelay 小于等于0执行完后删除 */ public BaseThread(String threadName, Long removeDelay) { this.threadName = threadName; this.removeDelay = removeDelay; } @Override public void run() { try { startTime = System.currentTimeMillis(); excuteTask(); endTime = System.currentTimeMillis(); } catch (Exception e) { logger.error("开奖线程异常。"); logger.error(e.getMessage(),e); } finally { logger.info("开奖线程状态数据移除。"); ThreadManage.removeThreadData(threadName); } } public abstract void excuteTask(); public Long getStartTime() { return startTime; } public void setStartTime(Long startTime) { this.startTime = startTime; } public String getThreadName() { return threadName; } public void setThreadName(String threadName) { this.threadName = threadName; } public Long getEndTime() { return endTime; } public void setEndTime(Long endTime) { this.endTime = endTime; } public Long getRemoveDelay() { return removeDelay; } public void setRemoveDelay(Long removeDelay) { this.removeDelay = removeDelay; } public boolean isRun() { return isRun; } public void setRun(boolean isRun) { this.isRun = isRun; } }
package com.xxx.betcart.server.service.impl.threadmanager; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ScheduledThreadPoolExecutor; public class ThreadManage { public static ScheduledThreadPoolExecutor threadExec = new ScheduledThreadPoolExecutor(50); //key为唯一的标识 public static Map<String, BaseThread> map = new HashMap<String, BaseThread>(); /** * 执行线程,并把线程放入管理MAP中 * * @param thread * @create_time 2010-12-29 下午08:33:15 */ public static void excute(BaseThread thread) { map.put(thread.getThreadName(), thread); threadExec.execute(thread); } /** * 检查线程是否运行中 * @param threadName * @return T 是 F不是 * @create_time 2010-12-29 下午08:55:13 */ public static boolean isExcute(String threadName) { BaseThread thread = map.get(threadName); if (thread == null) { return false; } else { return true; } } /** * 删除线程数据 * @param threadName * @create_time 2010-12-29 下午09:46:48 */ public static void removeThreadData(String threadName) { map.remove(threadName); } /** * 遍历移除超时线程数据 * * @create_time 2010-12-29 下午09:58:15 */ public static void removeThreadDataTimeOut() { for (String name : map.keySet()) { BaseThread thread = map.get(name); if (thread.getEndTime() != null && thread.getRemoveDelay() > 0) { if (System.currentTimeMillis() > (thread.getEndTime() + thread.getRemoveDelay())) { removeThreadData(name); } } } } public static void main(String[] args) throws Exception { } }
package com.xxx.betcart.server.service.impl.threadmanager.thread; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.xxx.betcart.common.service.BetPlanPackageService; import com.xxx.betcart.server.service.impl.threadmanager.BaseThread; /** * 派奖线程 * * @project admin * @author alanpeng * @date 2011-6-2 * Copyright (C) 2010-2012 www.2caipiao.com Inc. All rights reserved. */ public class SychronizedPrizeThread extends BaseThread { private transient final Logger logger = LoggerFactory.getLogger(SychronizedPrizeThread.class); private long packageId; private BetPlanPackageService betPlanPackageService; public SychronizedPrizeThread(String threadName, long packageId, BetPlanPackageService betPlanPackageService) { super(threadName,0l); this.packageId = packageId; this.betPlanPackageService = betPlanPackageService; } public void excuteTask() { try { setRun(true); Thread.currentThread().setName(this.getThreadName()); betPlanPackageService.synchronousPrizeByPackageId(packageId); } catch (Exception e) { logger.error(e.getMessage(), e); } finally { setRun(false); } } }
发表评论
文章已被作者锁定,不允许评论。
-
ES聚合查询大全
2020-11-18 16:16 270package com.xxx.es; import ... -
spring中使用logback日志组件替换log4j
2015-04-29 15:27 947logback比log4j的强大之处,请到logback的主页 ... -
java加密解密
2015-02-10 15:05 1733package com.neo.xnol.weixin.u ... -
eclipse常用配置
2015-01-05 11:23 1243Eclipse常用配置介绍 以 ... -
分布式事务-幂等
2014-12-30 14:04 684引用 http://www.360doc.com/conten ... -
实现基于nginx的tomcat负载均衡和集群配置
2014-12-26 16:22 1119今天看到"基于apache的tomcat负载均衡和集 ... -
java导出Excel
2014-10-14 17:00 1105package com.xxxpiao.datacompa ... -
<base target="_self"/>标签的巧妙用法
2014-10-10 15:34 749最近项目中一个小问题卡了我不少时间。我遇到的问题是:在项目的弹 ... -
分布式一致性-幂等
2014-09-28 14:53 1114关于分布式系统的数据 ... -
ModelResult-查询封装类
2014-09-25 09:14 3567package com.xxx.appmodel.doma ... -
LDAP工具类
2014-09-05 10:12 894package com.xxxpiao.common.ut ... -
通过JNDI访问LDAP目录服务
2014-09-04 17:46 3107package com.sina.test; imp ... -
java获取两个日期之间的年月(yyyy-MM)和年月日(yyyy-MM-dd)
2014-07-29 14:42 1856public List<String> pro ... -
maven-.m2
2014-07-28 14:48 800<settings> <!--< ... -
maven实战
2014-07-07 10:04 755<settings> <!--< ... -
验证敏感词汇
2014-07-04 10:01 964package com.xxxpiao.core.memb ... -
Jms实战
2014-07-02 09:27 699<?xml version="1.0&qu ... -
互联网数功能位,表扩展(flagBit,feature)
2014-06-26 17:39 816<select id="queryRegT ... -
JDBC分批更新
2014-06-26 17:11 627@Override public boolean ba ... -
分批查询
2014-06-26 17:08 841package com.xxxpiao.common.ut ...
相关推荐
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、...理解并合理运用抽象工厂模式,可以提升软件架构的质量,降低系统维护的成本。
在编程世界中,抽象类和接口是面向对象设计的重要概念,它们都用于实现代码的抽象和多态性,但有着不同的使用场景和规则。这里我们将深入探讨这两种机制,并结合给出的"codePiece"代码片段来分析它们在实际应用中的...
2. **工厂方法模式**:工厂方法模式是简单工厂模式的进一步抽象和推广,它定义一个创建对象的接口,让子类决定实例化哪一个类。在多线程场景下,工厂方法模式可以让每个线程根据需要创建自己的对象,降低了线程间的...
2. NSThread:轻量级线程类,允许开发者手动创建和管理线程,但使用相对复杂。 3. NSOperationQueue:基于GCD的高级抽象,提供了任务依赖、优先级等功能,更易于使用和管理。 4. NSTimer:通常在RunLoop中运行,不...
Java面试题涵盖了诸多核心概念,包括线程、同步异步、面向对象特性、多态、抽象类与接口等。下面将详细解释这些知识点。 1. **线程创建**: - Java中创建线程有两种方式:一是继承`Thread`类并重写`run()`方法,二...
- **1.5.1 避免显式创建线程**:除非必要,应尽量使用高级抽象如GCD、Operation Queues等。 - **1.5.2 保持你的线程合理的忙**:避免线程空闲或过度使用CPU资源。 - **1.5.3 避免共享数据结构**:减少数据竞争,使用...
在Java编程语言中,抽象类和接口是两个重要的...在Java全栈开发中,灵活运用抽象类和接口可以提高代码质量,降低维护成本,提升系统灵活性。开发者需要根据具体需求来选择使用抽象类还是接口,以达到最佳的设计效果。
- **Task类**:异步操作的抽象,可以使用`Task.Run()`或`Task.Factory.StartNew()`创建异步任务。 通过理解并熟练运用这些知识点,开发者可以编写出高效、稳定且响应性强的多线程C#应用程序。在实际开发中,还需...
- 接口是抽象类的一种特例,所有方法默认为`public abstract`,成员变量默认为`public static final`。 - 抽象类可以有构造方法,接口则不能。 - 抽象类可以包含非抽象方法,接口中所有方法必须是抽象的。 - ...
理解并熟练运用以上知识点,可以帮助开发者高效地编写并发和多线程的C#程序,充分利用多核处理器的性能,同时避免可能出现的并发问题。在实际应用中,还需要结合具体场景灵活选择和使用各种工具和策略,以实现最佳...
3. **线程对象**:Java将线程抽象为Thread类或实现了Runnable接口的对象。 4. **优先级**:线程有优先级,0到10,高优先级的线程会获得更多的CPU时间片。 5. **资源竞争**:多线程共享资源可能导致冲突,需通过`...
- 抽象类使用 `abstract` 关键字声明,不能实例化。 - 抽象方法只有声明,没有实现,必须在抽象类或实现了该方法的子类中提供实现。 10. 接口(interface): - 类可以使用 `implements` 关键字实现一个或多个...
- 抽象类与接口:抽象类可以实现接口,实体类可以被抽象类继承,但实体类必须有公共构造器。 3. 抽象类与接口的区别: - 抽象类:包含抽象方法,部分或全部方法未实现。子类必须实现所有抽象方法。 - 接口:只有...
Java程序中的线程是在操作系统级别的线程基础上进行抽象的。每个Java程序都有一个主线程,即由JVM启动并执行main方法的线程。线程代表了程序中的执行流,可以在不同的线程之间切换以共享CPU时间。线程的状态包括新建...
- 抽象类可以包含抽象方法的实现,而接口只能定义public抽象方法。 - 抽象类可以有非静态成员变量,接口的成员变量默认为public static final。 - 一个类只能继承一个抽象类,但可以实现多个接口。 - 抽象类注重...
`TThread` 是一个抽象类,它是所有用户定义线程类的基础。创建一个新的线程类时,需要继承 `TThread` 并重写其关键方法,如 `Execute`,在这个方法中定义线程要执行的具体代码。 1. **线程创建与启动**: - 创建...
5. **异步编程与Task**:.NET 4.0引入了`Task`类,它是异步编程的主要工具,提供了比传统线程更高级别的抽象。Task可以用来执行异步操作,与线程相比,它们更适合于I/O密集型任务。例如: ```csharp Task.Run(() =...
在实际编程中,根据项目需求和性能考虑,合理选择使用String、StringBuilder或StringBuffer,理解继承与接口的区别以及何时使用,以及熟练运用各种修饰符和容器类,将有助于编写出高效、可维护的代码。
综上所述,这个示例文件可能包含了一个或多个类,它们可能实现了工厂模式,定义了接口,继承了抽象类,并且可能还有单例模式的运用。这些设计模式和概念的结合展示了如何在实际项目中组织和管理代码,以达到高效、...
- 接口与抽象类的区别。 - **多态性** - 多态性的实现方式。 - `instanceof`关键字。 - **Object类** - Object类的方法(`toString()`, `equals()`, `hashCode()`等)。 - **包装类** - 基本数据类型的包装类。 ...