您当前的位置:首页 > 互联网教程

java中如何定时清除hashmap

发布时间:2025-05-21 21:59:12    发布人:远客网络

java中如何定时清除hashmap

一、java中如何定时清除hashmap

在Java中,要定时清除HashMap,只需要每隔一定频率的时间调用下其clear方法即可。

1、编写一个定时Timer类,并指定执行的时间频率。

2、编写一个定时任务Task类,里面所要执行的动作就是清除HashMap的内容。

3、在Timer类中调用Task类的发清除动作,启动定时器,即可完成定时清除的任务。

HashMap是Jdk1.2摧出来的一个基于哈希表的 Map接口的实现。此实现提供所有可选的映射操作,除了非同步和允许使用 null之外,HashMap类与 Hashtable大致相同。如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。

由于HashMap的非同步性,其性能效率相对高于HashTable,故是开发中是经常用到的一个键值对集合。

二、java定时器与线程的区别

1、尽管所有 Timer都使用一个共享线程(由第一个执行操作的 Timer对象创建)执行等待,但是 Timer的动作事件处理程序还会在其他线程(事件指派线程上)执行。这意味着 Timer的操作处理程序可以安全地在 Swing组件上执行操作。但是,它也意味着处理程序必须快速执行以保证 GUI作出响应。

2、一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

3、简单理解,javax.swing.Timer没有增加线程,利用事件线程的间隙运行,java.util.Timer增加线程了。

三、java 方法 执行超时处理

java 1.5以上的Future类可以执行超时处理。

jdk1.5自带的并发库中Future类中重要方法包括get()和cancel(),get()获取数据对象,如果数据没有加载,就会阻塞直到取到数据,而 cancel()是取消数据加载。另外一个get(timeout)操作,表示如果在timeout时间内没有取到就失败返回,而不再阻塞。

importjava.util.concurrent.Callable;

importjava.util.concurrent.ExecutionException;

importjava.util.concurrent.ExecutorService;

importjava.util.concurrent.Executors;

importjava.util.concurrent.TimeUnit;

importcom.sun.corba.se.impl.orbutil.closure.Future;

importcom.sun.corba.se.impl.orbutil.threadpool.TimeoutException;

publicstaticvoidmain(String[]args)throwsInterruptedException,

finalExecutorServiceexec=Executors.newFixedThreadPool(1);

Callable<String>call=newCallable<String>(){

publicStringcall()throwsException{

Future<String>future=exec.submit(call);

Stringobj=future.get(1000*1,TimeUnit.MILLISECONDS);//任务处理超时时间设为1秒

System.out.println("任务成功返回:"+obj);

System.out.println("处理超时啦....");

System.out.println("处理失败.");