java多线程的效率就一定高吗?
很久没上来了,发现虽然资料和书看的很多,但是很久没碰的东西还是很容易淡忘。以后希望能多记录吧。
今天玩了把线程池,并对其中的参数做了一些调整,并记录在多并发情况下线程数对各种情况的反应。程序是网上找的,并作了稍微修改。
java的线程池实现,ThreadPool
package net.zj.hz.yk.threadpool;
import java.util.LinkedList;
public class ThreadPool extends ThreadGroup {
private boolean isClosed = false; // 线程池是否关闭
private LinkedList workQueue; // 工作队列
private static int threadPoolID = 1; // 线程池的id
public ThreadPool(int poolSize) {
super(threadPoolID + "");// 指定ThreadGroup的名称
setDaemon(true); // 继承到的方法,设置是否守护线程池
workQueue = new LinkedList(); // 创建工作队列
for (int i = 0; i < poolSize; i++) {
new WorkThread(i).start(); // 创建并启动工作线程,线程池数量是多少就创建多少个工作线程
}
}
/** 等待工作线程把所有任务执行完毕 */
public void waitFinish() {
synchronized (this) {
isClosed = true;
notifyAll(); // 唤醒所有还在getTask()方法中等待任务的工作线程
}
// activeCount() 返回该线程组中活动线程的估计值。
Thread[] threads = new Thread[activeCount()];
// enumerate()方法继承自ThreadGroup类,根据活动线程的估计值获得线程组中当前所有活动的工作线程
int count = enumerate(threads);
for (int i = 0; i < count; i++) { // 等待所有工作线程结束
try {
threads[i].join(); // 等待工作线程结束
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
/** 关闭线程池 */
public synchronized void closePool() {
if (!isClosed) {
// 等待工作线程执行完毕
waitFinish();
isClosed = true;
// 清空工作队列
workQueue.clear();
// 中断线程池中的所有的工作线程,此方法继承自ThreadGroup类
interrupt();
}
}
/** 向工作队列中加入一个新任务,由工作线程去执行该任务 */
public synchronized void execute(Runnable task) {
if (isClosed) {
throw new IllegalStateException();
}
if (task != null) {
// 向队列中加入一个任务
相关文档:
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我们声明了一个Strin ......
第一种:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
效率高,以后一定要使用此种方式!
第二种:
Map map = new HashMap();
Iterator iter = ma ......
Java
虚拟机(JVM)是可运行Java
代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。本文首先简要介绍从Java文件的编译到最终执行的过程,随后对JVM规格描述作一说明。
一.Java源文件的编译、下载
、解释和执行
Java应用程序的开发 ......
安装开发环境
ubuntu9.10下安装JAVA开发环境其实还是比较简单的,我们就以安装常用的jdk、eclipse、tomcat、svn client(找到一个可以和windows中的小乌龟类似的但安装还有点问题解决后会补上)、oracle client为例讲讲如何安装(本文中自动化安装脚本下载http://download.csdn.net/source/2034239,文件太大分成6份 )。前 ......