多线程是java语言的一大特性,多线程就是同时存在n个执行体,按几条不同的执行线索共同工作的情况。程序,进程,线程,可以从不同的角度去理解。 程序就是一段静态的代码,可以理解成一组计算机命令的集合.进行就是这个程序一次动态的执行过程,从代码的加载到执行完毕的一个过程。线程是一个比进程小的单位,一个进程再执行的过程中可以产生多个线程,每个线程也是由生产到销毁,可以理解成是进行的子集。我个人用一个觉得还算恰当的比喻来比喻三者。qq客户端就是一个程序,登陆一个qq就是开始了这个程序的一个进程,再qq上发送消息给好友就貌似这个进程中的一个线程。不知道这样比喻恰当否?
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class mythread extends applet implements runnable {
int money = 100;
textarea text1 = null;
textarea text2 = null;
thread kuaiji = null;
thread chuna = null;
public void init() {
kuaiji = new thread(this);
chuna = new thread(this);
text1 = new textarea(20,8);
text2 = new textarea(20,8);
add(text1);
add(text2);
}
public void start() {
kuaiji.start();
chuna.start();
}
public synchronized void cunqu(int number) {
if(thread.currentthread() == kuaiji) {
for(int i=1;i<=3;i++) {
money = money + number;
try {thread.sleep(1000);}
catch(exception e){}
text1.append("\n"+money);
}
}
else if(thread.currentthread() == chuna) {
for(int i=1;i<=2;i++) {
money = money - number/2;
try {thread.sleep(1000);}
catch(exception e){}
text2.append("\n"+money);
}
}
}
public void run() {
if(thread.currentthread()==kuaiji thread.currentthread()==chuna) {
for(int i=1;i<=3;i++) {
cunqu(30);
}
}
}
}Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器