很多人把装饰器搞的很复杂,其实本质很简单.
首先,什么是装饰器呢?在代码中发现戴着@xxx帽子的,就是装饰器.
那要怎么自己定义一个装饰器呢?
其实任何一个接收一个参数的callable都可以用来做装饰器,比如函数和类.为方便起见,下面的例子都用函数来说明.
def deco(func):return 1
这里,deco就可以做装饰器.
@deco
def f(args):pass
...
分类:
编程语言 时间:
2014-10-11 20:05:36
阅读次数:
240
这个模块提供了3个有趣的函数,这里介绍下其用法。 首先是partial函数,它可以重新绑定函数的可选参数,生成一个callable的partial对象 >>>?int(‘10‘)?#?实际上等同于int(‘10‘,?base=10)和int(‘10‘,?10)??...
分类:
编程语言 时间:
2014-10-11 17:26:26
阅读次数:
214
解析php函数method_exists()与is_callable()的区别本篇文章是对php中method_exists()与is_callable()的区别进行了详细的分析介绍,需要的朋友参考下php函数method_exists() 与is_callable()的区别在哪?在php面相对象设...
分类:
Web程序 时间:
2014-10-11 11:43:15
阅读次数:
209
工作中很多涉及到多线程的地方都implemnets Runable 接口 或者是 extends Thread 抽象类,但是这样子的话得不到返回值。
如果以下场景:
在多线程中计算值,线程结束后需要携带返回值。
这时就需要Callable接口,实现改接口后需要实现方法 call 。改接口需要ExecutorService的submit方法执行,执行结果包装在 Future泛型类中。
通过Future类的get()方法取得返回值,get()是阻塞的,在线程执行前调用get()方法会一直阻塞着。...
分类:
其他好文 时间:
2014-10-09 20:44:17
阅读次数:
214
1.以前使用线程API并没有返回结果,Callable/Future/FutureTask正是解决了此问题,并在调用过程中
作出对异常的捕获
-Callable执行call()方法返回Object对象,也可抛出异常;调用
Callable并不像Thread,而是调用 Future ExecutorService.submit(Callable task);
-Future 返回值,调用该接...
分类:
编程语言 时间:
2014-10-07 18:09:53
阅读次数:
279
这两天复习java线程时,把java里面的线程基本知识点与jdk1.5以后新添加的一些类的使用都了解了一下,借用生产者消费者的问题来将他们实践一下。题目:(题目在csdn一大牛的空间找的) 生产者-消费者模式,这个食堂中只有1张桌子,同时最多放10个盘子,现在有4个厨师做菜,每做好一盘就往桌子上放(...
分类:
编程语言 时间:
2014-10-03 03:08:33
阅读次数:
416
Java并发编程实践 目录并发编程—— ConcurrentHashMap并发编程—— 阻塞队列和生产者-消费者模式并发编程—— 闭锁CountDownLatch 与 栅栏CyclicBarrier并发编程—— Callable和Future并发编程—— CompletionService : Ex...
分类:
其他好文 时间:
2014-09-26 13:45:58
阅读次数:
220
Java并发编程实践 目录并发编程—— ConcurrentHashMap并发编程—— 阻塞队列和生产者-消费者模式并发编程—— 闭锁CountDownLatch 与 栅栏CyclicBarrier并发编程—— Callable和Future并发编程—— CompletionService : Ex...
分类:
其他好文 时间:
2014-09-25 20:36:17
阅读次数:
143
ThreadPoolExecutor提供了另一个非常强有力的接口,那就是callable。这个接口和runnable类似,但是实现这个
接口的方法是call方法,这个方法是可以返回值的,弥补了runnable不能返回值的悲哀。而且这个方法可以配合ThreadP
oolExecutor使用,获得Future接口,从这个接口的名字我们就能知道,返回的这个类似于指向这个线程的一个指针,我
们能通过...
分类:
编程语言 时间:
2014-09-23 22:57:05
阅读次数:
250
1. 背景在Java5的多线程中,可以使用Callable接口来实现具有返回值的线程。使用线程池的submit方法提交Callable任务,利用submit方法返回的Future存根,调用此存根的get方法来获取整个线程池中所有任务的运行结果。方法一:如果是自己写代码,应该是自己维护一个Collec...
分类:
编程语言 时间:
2014-09-16 14:02:50
阅读次数:
449