java多线程应用:Java程序开发中如何应用线程来源: 发布时间:星期三, 2008年12月17日 浏览:2次 评论:0
Java平台从开始就被设计成为多线程环境在你主执行时候其它作业如碎片收集和事件处理则是在后台进行
本质上你可以认为这些作业是线程它们正好是系统管理线程但是无论如何它们是线程线程使你能够定义相互独立作业彼此的间互不干扰系统将交换这些作业进或出cpu这样(从外部看来)它们好象是同时运行
在你需要在你中处理多个作业时你也可以使用多个进程这些进程可以是你自己创建你也可以操纵系统线程你进行这些多作业处理要使用几个区别类或接口:
java.util.timer类
javax.swing.timer类
thread类
runnable接口
对于简单作业通常需要重复你可以使用java.util.timer类告诉它“每半秒钟做次”注意:大多数系统例程是使用毫秒半秒钟是500毫秒
你希望timer实现任务是在java.util.timertask例子中定义其中运行思路方法包含要执行任务这些在hi类中进行了演示其中串“hi”重复地被显示在屏幕上直到你按enter键
import java.util.*;
public hi
{
public void
( args);
timer.cancel;
}
}
java runtime environment工作方式是只要有个线程在运行就不退出这样当取消被没有其它线程在运行了则退出有些系统线程在运行如碎片收集这些系统线程也被称为后台线程后台线程存在不影响运行环境被关闭只有非后台线程保证运行环境不被关闭
javax.swing.timer类和java.util.timer类工作方式相似但是有些差别需要注意第运行作业被actionlistener接口实现来定义第 2作业执行是在事件处理线程内部进行而不象java.util.timer类是在它外部这是很重要它关系到swing组件集是如何设计
如果你不熟悉swing它是组可以被java使用图形组件swing被设计程被称为单线程这意味着对swing类内部内容访问必须在单个线程中完成这个特定线程是事件处理线程
这样例如你想改变label组件文字你不能仅仅jlabeltext思路方法相反你必须确认text发生在事件处理线程中而这正是javax.swing.time类派上用场地方
为了介绍说明这第 2种情况下面显示个增加计数器值美半秒钟计数器数值增加并且新数值被显示:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public count
{
public void
( args)
{
final url = args;
final message = args;
thread thread1 = thread
{
public void run
{
try
{
url url = url(url);
urlconnection connection =
url.openconnection;
inputstreamreader isr =
inputstreamreader(
connection.getinputstream);
bufferedreader reader =
bufferedreader(isr);
count = 0;
while (reader.read != -1)
{
count;
}
system.out.prln("size is : "
+ count);
reader.close;
} catch (malformedurlexception e)
{
system.err.prln("bad url: "
+ url);
} catch (ioexception e)
{
system.err.prln
("i/o problems");
}
}
};
thread1.start;
runnable runnable = runnable
{
public void run
{
while(true)
{
system.out.prln(message);
try
{
thread.sleep(500);
} catch (erruptedexception e)
{
}
}
}
};
thread thread2 = thread(runnable);
thread2.start;
try {
system.out.prln
("press enter to stop");
system.in.read( );
} catch (ioexception e)
{
system.out.prln("i/o problems");
}
system.exit(0);
}
}
有多种方式来处理线程你选用哪种技术取决于你和你面临条件要成为个有效java编程人员尽管你通常不必学习java编程语言所有内容和核心库但是线程是个例外你越早了解线程如何工作和如何使用线程你将越早了解java如何工作和交互
0
相关文章
读者评论
发表评论 |