java——Handler类

一直以来,分不清楚java的Handler和android的handler,今天得空,看了下api,和源码,就胡乱写一下。

java中的handler类直接继承自Object类,jdk 1.6 api是这样描述handler的:

public abstract class Handler  extends Object

java.lang.Object
  java.util.logging.Handler
直接已知子类:
MemoryHandler, StreamHandler

Handler 对象从 Logger 中获取日志信息,并将这些信息导出。例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。

可通过执行 setLevel(Level.OFF) 来禁用 Handler,并可通过执行适当级别的 setLevel 来重新启用。

Handler 类通常使用 LogManager 属性来设置 HandlerFilterFormatterLevel 的默认值。有关每个具体的 Handler 类,请参阅指定的文档

abstract  void close()
          关闭 Handler,并释放所有相关的资源。
abstract  void flush()
          刷新所有的缓冲输出。
 String getEncoding()
          返回该 Handler 的字符编码。
 ErrorManager getErrorManager()
          获取该 Handler 的 ErrorManager。
 Filter getFilter()
          获得该 Handler 的当前 Filter。
 Formatter getFormatter()
          返回该 Handler 的 Formatter。
 Level getLevel()
          获得用于指定该 Handler 所记录信息的日志级别。
 boolean isLoggable(LogRecord record)
          检查该 Handler 是否实际记录给定的 LogRecord。
abstract  void publish(LogRecord record)
          发布 LogRecord。
protected  void reportError(String msg, Exception ex, int code)
          用于向该 Handler 的 ErrorManager 报告错误的受保护便利方法。
 void setEncoding(String encoding)
          设置该 Handler 所用的字符编码。
 void setErrorManager(ErrorManager em)
          为该 Handler 定义一个 ErrorManager。
 void setFilter(Filter newFilter)
          设置 Filter,以控制该 Handler 的输出。
 void setFormatter(Formatter newFormatter)
          设置 Formatter。
 void setLevel(Level newLevel)
          设置日志级别,指定该 Handler 所记录的信息级别。

Java中的Handler机制是Android开发中非常重要的一个概念,它是用来处理线程之间的通信的。在Java中,也可以使用Handler机制来实现线程之间的通信,这里简要介绍一下Java中的Handler机制。 Java中的Handler机制是基于线程池的,它可以将任务提交到线程池中执行,并且可以将执行结果返回给调用者。在Java中,可以使用Executor框架来实现线程池,同时可以使用Future接口来获取执行结果。 在Java中,Handler机制可以通过以下几个步骤来实现: 1. 创建一个线程池,可以使用Executor框架来实现。 2. 创建一个Callable接口的实现,该实现用来执行任务并返回结果。 3. 将Callable实现提交到线程池中执行,可以使用submit()方法来实现。 4. 获取执行结果,可以使用Future接口来获取。 下面是一个简单的示例代码: ```java import java.util.concurrent.*; public class HandleJava { public static void main(String[] args) throws Exception { // 创建线程池 ExecutorService executor = Executors.newFixedThreadPool(1); // 创建Callable实现 Callable<String> callable = new Callable<String>() { @Override public String call() throws Exception { // 执行任务 Thread.sleep(1000); return "Hello, world!"; } }; // 提交任务到线程池 Future<String> future = executor.submit(callable); // 获取执行结果 String result = future.get(); System.out.println(result); // 关闭线程池 executor.shutdown(); } } ``` 这个示例代码中,创建了一个线程池,然后创建了一个Callable实现,将其提交到线程池中执行,并且使用Future接口来获取执行结果。最后关闭线程池。 需要注意的是,线程池一定要关闭,否则程序会一直运行下去,不会退出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值