仓酷云
标题:
JAVA网站制作之Java游戏起步:(一)线程与线程池
[打印本页]
作者:
柔情似水
时间:
2015-1-18 11:42
标题:
JAVA网站制作之Java游戏起步:(一)线程与线程池
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。任何游戏都最少必要运转两个线程,主线程和GUI线程
而线程池是一个办理运转线程的有效工具,上面的代码树模了一个线程池的完成办法~~
************************************************
(ThreadPool.java)
importjava.util.LinkedList;
/**
线程池是一组线程,限定实行义务的线程数
*/
publicclassThreadPoolextendsThreadGroup{
privatebooleanisAlive;
privateLinkedListtaskQueue;
privateintthreadID;
privatestaticintthreadPoolID;
/**
创立新的线程池,numThreads是池中的线程数
*/
publicThreadPool(intnumThreads){
super("ThreadPool-"+(threadPoolID++));
setDaemon(true);
isAlive=true;
taskQueue=newLinkedList();
for(inti=0;i<numThreads;i++){
newPooledThread().start();
}
}
/**
哀求新义务。人物在池中下一余暇线程中运转,义务按收到的按次实行
*/
publicsynchronizedvoidrunTask(Runnabletask){
if(!isAlive){
thrownewIllegalStateException();//线程被关则抛出IllegalStateException非常
}
if(task!=null){
taskQueue.add(task);
notify();
}
}
protectedsynchronizedRunnablegetTask()
throwsInterruptedException
{
while(taskQueue.size()==0){
if(!isAlive){
returnnull;
}
wait();
}
return(Runnable)taskQueue.removeFirst();
}
/**
封闭线程池,一切线程中断,不再实行义务
*/
publicsynchronizedvoidclose(){
if(isAlive){
isAlive=false;
taskQueue.clear();
interrupt();
}
}
/**
封闭线程池并守候一切线程完成,实行守候的义务
*/
publicvoidjoin(){
//告知守候线程线程池已关
synchronized(this){
isAlive=false;
notifyAll();
}
//守候一切线程完成
Thread[]threads=newThread[activeCount()];
intcount=enumerate(threads);
for(inti=0;i<count;i++){
try{
threads[i].join();
}
catch(InterruptedExceptionex){}
}
}
/**
用于举行义务的线程
*/
privateclassPooledThreadextendsThread{
publicPooledThread(){
super(ThreadPool.this,
"PooledThread-"+(threadID++));
}
publicvoidrun(){
while(!isInterrupted()){
//失掉义务
Runnabletask=null;
try{
task=getTask();
}
catch(InterruptedExceptionex){}
//若getTask()前往null或中止,则封闭此线程并前往
if(task==null){
return;
}
//运转义务,吸取非常
try{
task.run();
}
catch(Throwablet){
uncaughtException(this,t);
}
}
}
}
}
*********************************************
要测试这个线程池,能够经由过程上面这个Test程序!
*********************************************
(ThreadPoolTest.java)
publicclassThreadPoolTest{
publicstaticvoidmain(String[]args){
if(args.length!=2){
System.out.println("TeststheThreadPooltask.");
System.out.println(
"Usage:javaThreadPoolTestnumTasksnumThreads");
System.out.println(
"numTasks-integer:numberoftasktorun.");
System.out.println(
"numThreads-integer:numberofthreads"+
"inthethreadpool.");
return;
}
intnumTasks=Integer.parseInt(args[0]);
intnumThreads=Integer.parseInt(args[1]);
//天生线程池
ThreadPoolthreadPool=newThreadPool(numThreads);
//运转义务
for(inti=0;i<numTasks;i++){
threadPool.runTask(createTask(i));
}
//封闭线程池并守候一切义务完成
threadPool.join();
}
/**
一个复杂的义务(打印ID)
*/
privatestaticRunnablecreateTask(finalinttaskID){
returnnewRunnable(){
publicvoidrun(){
System.out.println("Task"+taskID+":start");
//增添耗时
try{
Thread.sleep(500);
}
catch(InterruptedExceptionex){}
System.out.println("Task"+taskID+":end");
}
};
}
}
******************************************************
如许的线程池能够在很多中央使用!
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,
作者:
分手快乐
时间:
2015-1-21 13:01
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者:
简单生活
时间:
2015-1-30 18:50
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者:
飘飘悠悠
时间:
2015-2-6 15:03
是一种为 Internet发展的计算机语言
作者:
不帅
时间:
2015-2-9 22:21
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者:
若相依
时间:
2015-2-13 11:00
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者:
只想知道
时间:
2015-3-3 20:08
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者:
小魔女
时间:
2015-3-11 13:01
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
柔情似水
时间:
2015-3-17 05:10
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
因胸联盟
时间:
2015-3-24 03:24
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者:
老尸
时间:
2015-4-2 11:33
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者:
活着的死人
时间:
2015-4-13 16:34
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者:
小妖女
时间:
2015-4-16 22:09
Java 编程语言的风格十分接近C、C++语言。
作者:
海妖
时间:
2015-4-30 01:52
Java 编程语言的风格十分接近C、C++语言。
作者:
乐观
时间:
2015-5-2 20:30
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者:
透明
时间:
2015-5-6 03:10
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者:
冷月葬花魂
时间:
2015-5-8 02:28
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者:
愤怒的大鸟
时间:
2015-6-12 23:15
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者:
兰色精灵
时间:
2015-7-8 03:47
Java是一种计算机编程语言,拥有跨平台、面向对java
作者:
蒙在股里
时间:
2015-7-12 07:27
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2