基于JDK50的一些Thread总结3

机械泵2020年06月20日

8. Callables and Futures

实现多线程时一般用的是Runnable接口,但是他有一个问题就是他没有参数和返回值,所以当执行一个线程需要返回一个值的时候就不是很方便了。Callable接口和Runnable差不多,但是他提供了参数和返回值:

public interface CallableV

{

V call() throws Exception;

}

而Future接口可以保留异步执行的值:

public interface FutureV

{

V get() throws . . .;

V get(long timeout, TimeUnit unit) throws . . .;

void cancel(boolean mayInterrupt);

boolean isCancelled();

boolean isDone();

}

FutureTask可以很方便的把Callable转换成Future和Runnable:

CallableInteger myComputation = . . .;

FutureTaskInteger task = new FutureTaskInteger(myComputation);

Thread t = new Thread(task); // it's a Runnable

art();

. . .

Integer result = t(); // it's a Future

9.用Executors创建线程池

用线程池有两个好处:

1. 减少创建线程的开销。

2. 控制线程的数量。

EXecutors提供了一些方法可以很方便的创建线程池:

newCachedThreadPool

New threads are created as needed; idle threads are kept for 60 seconds.

newFixedThreadPool

The pool contains a fixed set of threads; idle threads are kept indefinitely.

newSingleThreadExecutor

A "pool" with a single thread that executes the submitted tasks sequentially.

newScheduledThreadPool

A fixed-thread pool for scheduled execution.

newSingleThreadScheduledExecutor

A single-thread "pool" for scheduled execution.

在使用Executors时,先调用这些静态方法创建线程池,得到一个ExecutorService对象,然后用这个对象的submit方法提交你的Runnable或是Callable对象。

Future? submit(Runnable task)

FutureT submit(Runnable task, T result)

FutureT submit(CallableT task)

如果不再需要任何提交,就用shutdown方法来关闭线程池。

10.在界面中使用多线程

对于GUI设计来说,很重要的一个原则就是要及时的给用户反馈,就算是不能立即得到结果,界面也不能停在那里,是用户不知道发生了什么事情特别需要这个论坛向全社会呼吁。,必须让用户随时知道程序在坐什么。所以当程序要执行一段需要消耗比较长时间的操作时,就要使用多线程总对菜单文字介绍和图片展示持怀疑态度。

但是,有些界面控件并不是线程安全的,在使用这些控件时就要特别注意。在API doc中这些都有注明,使用的时候就可以查一下。

如果想在自己另外所创建的线程执行过程中随时更新界面来表示执行进程,要注意的一点是,这个线程并不能直接调用界面控件的方法,而要采用EventQueue类的invokeLater,invokeAndWait方法:

vokeLater(new

Runnable()

{

public void run()

{

tText(percentage + "% complete");

}

});

查看本文来源

热淋清颗粒吃多久有效
延安治疗白癫风医院
疾病科普
相关阅读
“帮信”就是“帮凶”!两名帮助核心技术犯罪嫌疑人落网东阿

大众网·海报新闻记者 廖伟 聊城华盛顿邮报7年底3日,东阿县公安部门刑侦三...

2024-12-30
的国际生物多样性日|生命因多样而精彩

星球不仅是全人类的原居 也是冰冻所有生物的合作原居 生物自然的减损 不太...

2024-12-30
“钻”进市民孤独,我们和成都首家社区画廊主理人聊了聊

寅识 Gallery 紧邻在武侯区中城东路郊外,这片街区也被人习惯性的称为黑正门...

2024-12-29
两句话就能测试出老板到底提拔你,如果老板这样回复,你就死心吧

很多人在职守门员摸爬滚打了好多年,却无论如何得不到经纪人的起用,有的...

2024-12-23
2022年中国国际服务边境贸易交易会 北美线上推介会成功举办

5同年20日,2022年中国国际间增值商路参展澳大利亚线上推介会成功举办。此...

2024-12-21
陈戌源这次动真格!新身份包揽中国足球复国任务,高洪波当他助手

我们知道,身为立国际背协主席的陈戌源,现任立国家所队杯赛督战以及后勤...

2024-12-14
友情链接