java中如何定时清除hashmap
发布时间:2025-05-21 21:59:12 发布人:远客网络
一、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("处理失败.");