Java7并发示例集110:线程组
对线程分组是Java并发API提供的一个有趣功能。我们可以将一组线程看成一个独立单元,并且可以随意操纵线程组中的线程对象。比如,可以控制一组线程来运行同样的任务,无需关心有多少线程还在运行,还可以使用一次中断调用中断所有线程的执行。
Java提供了ThreadGroup
类来控制一个线程组。一个线程组可以通过线程对象来创建,也可以由其他线程组来创建,生成一个树形结构的线程。
根据《Effective Java》的说明, 阅读全文…
对线程分组是Java并发API提供的一个有趣功能。我们可以将一组线程看成一个独立单元,并且可以随意操纵线程组中的线程对象。比如,可以控制一组线程来运行同样的任务,无需关心有多少线程还在运行,还可以使用一次中断调用中断所有线程的执行。
Java提供了ThreadGroup
类来控制一个线程组。一个线程组可以通过线程对象来创建,也可以由其他线程组来创建,生成一个树形结构的线程。
根据《Effective Java》的说明, 阅读全文…
昨天D瓜哥参加了一个Java工程师面试,具体公司名称就不透露了。感觉被问的问题挺有代表性。简单整理一下,发布出来,给需要的朋友一个参考吧。暂时没有解答,抱歉!
以前工作中收获最大的一次经历是什么?
这里只说明一下收获吧。
所需知识哪些 阅读全文…
最近在搞MySQL 5.6帮助手册的翻译。由于好多人都是DBA,没有接触过HTML,并且对Markdown也不熟悉,再加上需要统计一下大家在翻译中对链接和锚点的处理。所以,专门录制了一个视频来做讲解。现在已经发布出来,希望对有这方面需求的朋友有所帮助。
视频如下: 阅读全文…
D瓜哥已经给大家分享了两批多看邀请码,再给大家分享一批。
后来,无意间发现多看还有邀请码。我让我朋友使用邀请码注册成了多看用户,可以免费获得一本书。觉得不错,今天就把我买过的书的邀请码整理出来,给大家分享一下,大家也可以使用这些邀请码注册多看,免费获得一本好书。哈哈
当然,我承认我有私心:使用这些邀请码注册成功后,你首次成功购买多看精品书,同时我也可以获赠这本书。我为人人,人人为我,好书一起读,友情1+1!何乐而不为呢?哈哈
共享数据是并发程序最关键的特性之一。对于无论是继承Thread
类的对象,还是实现Runnable
接口的对象,这都是一个非常周重要的方面。
如果创建了一个实现Runnable
接口的类的对象,并使用该对象启动了一系列的线程,则所有这些线程共享相同的属性。换句话说,如果一个线程修改了一个属性,则其余所有线程都会受此改变的影响。
有时,我们更希望能在线程内单独使用,而不和其他使用同一对象启动的线程共享。Java并发接口提供了一种很清晰的机制来满足此需求,该机制称为本地线程变量。该机制的性能也非常可观。
按照下面所示步骤, 阅读全文…
Java语言中,把异常分为两类:
throws
子句中被显式抛出或者在方法内被捕获。例如,IOException
异常或ClassNotFoundException
异常。NumberFormatException
异常。当一个受检异常在Thread
对象的run()
方法中被抛出时,我们必须捕获并处理它,因为run()
方法不能抛出异常。而一个非受检异常在Thread
对象的run()
方法中被抛出时,默认的行为是在控制台打印出堆栈跟踪信息然后退出程序。
幸运的是,Java为我们提供了一种机制, 阅读全文…
Java有一种特殊线程,守护线程,这种线程优先级特别低,只有在同一程序中的其他线程不执行时才会执行。
由于守护线程拥有这些特性,所以,一般用为为程序中的普通线程(也称为用户线程)提供服务。它们一般会有一个无限循环,或用于等待请求服务,或用于执行任务等。它们不可以做任何重要的工作,因为我们不确定他们什么时才能分配到CPU运行时间,而且当没有其他线程执行时,它们就会自动终止。这类线程的一个典型应用就是Java的垃圾回收。
在本节示例中,我们将创建 阅读全文…