Java问题:有哪位Java高人帮忙解释下这段代码本人是菜鸟,越详细越好,逐语句解释下,谢谢~!~!

publicclassNewThreadimplementsRunnable{Stringname;Threadt;NewThread(Stringthreadname)... public class NewThread implements Runnable{
String name;
Thread t;

NewThread(String threadname){
name=threadname;
t=new Thread(this,name);
System.out.println("New thread:"+t);
t.start();
}
public void run(){
try{
for(int i=5;i>0;i--){
System.out.println(name+":"+i);
Thread.sleep(1000);
}
}catch(InterruptedException e){
System.out.println(name+"interrupad.");
}
System.out.println(name+ "exiting.");
}
}

public class NewThread implements Runnable{
String name;
Thread t;

NewThread(String threadname){
name=threadname;
t=new Thread(this,name);
System.out.println("New thread:"+t);
t.start();
}
public void run(){
try{
for(int i=5;i>0;i--){
System.out.println(name+":"+i);
Thread.sleep(1000);
}
}catch(InterruptedException e){
System.out.println(name+"interrupad.");
}
System.out.println(name+ "exiting.");
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class Demojoin {

public static void main(String[] args) {
NewThread ob1=new NewThread("one");
NewThread ob2=new NewThread("two");
NewThread ob3=new NewThread("three");

System.out.println("Thread one is alive:"+ob1.t.isAlive());
System.out.println("Thread two is alive:"+ob2.t.isAlive());
System.out.println("Thread three is alive:"+ob3.t.isAlive());

try{
System.out.println("waiting for threads to finish.");
ob1.t.join();
ob2.t.join();
ob3.t.join();
}catch(InterruptedException e){
System.out.println("Main thread Interrupted");
}
System.out.println("Thread one is alive:"+ob1.t.isAlive());
System.out.println("Thread one is alive:"+ob2.t.isAlive());
System.out.println("Thread one is alive:"+ob3.t.isAlive());

System.out.println("Main thread exiting.");
}
}
前两个类写重复了,不好意思
展开
 我来答
是否纳吉之子
2011-04-20 · TA获得超过490个赞
知道答主
回答量:143
采纳率:0%
帮助的人:226万
展开全部
public class NewThread implements Runnable{//类NewThread,接入Runnable接口(次接口为多线程用,必须重写run()方法)
String name;
Thread t;

NewThread(String threadname){//类NewThread构造方法
name=threadname;
t=new Thread(this,name);//实例化Thread类对象t,以this(即当前类)的Runnable接口为参数。
//也就是说,t这个对象的start()方法执行后,会真正的把Thread对象开一条额外线程,并执行参数中这个接口的run()方法

System.out.println("New thread:"+t);
t.start();//Thread对象t的start()方法执行,新开一条线程,然后在新线程中执行run方法
}
public void run(){//注意此方法是Runnable接口自带的抽象方法,凡是接了这个接口的类中,必须重写此方法,而此接口的start 方法执行后,必然执行自己的run方法
//线程运行后,必执行此方法里面的所有代码
try{
for(int i=5;i>0;i--){//i依次分别取5 4 3 2 1
System.out.println(name+":"+i);
Thread.sleep(1000);//当前线程暂停1000毫秒后继续执行下一步
}
}catch(InterruptedException e){//捕捉可能会出现的线程被中断的异常,
System.out.println(name+"interrupad.");//如果出现此异常会输出异常信息字符串到控制台
}
System.out.println(name+ "exiting.");//此线程所有代码都执行完后,输出一个已经退出的字串到控制台
}
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class Demojoin {

public static void main(String[] args) {//j2se程序入口
NewThread ob1=new NewThread("one");
NewThread ob2=new NewThread("two");
NewThread ob3=new NewThread("three");
//创建3个NewThread的对象,注意NewThread的对象在构造时候,必然会执行一次start方法,也就是说
//一旦NewThread xx= new NewThread()这个实例化语句一执行,必然开新线程运行它们各自的run方法。

System.out.println("Thread one is alive:"+ob1.t.isAlive());//ob1对象的t线程是否在激活状态,
System.out.println("Thread two is alive:"+ob2.t.isAlive());
System.out.println("Thread three is alive:"+ob3.t.isAlive());

try{
System.out.println("waiting for threads to finish.");
ob1.t.join();//如果ob1的t线程结束了才下一步
ob2.t.join();//同上
ob3.t.join();//同上,保证3个线程都结束了才下一步
}catch(InterruptedException e){
System.out.println("Main thread Interrupted");
}
System.out.println("Thread one is alive:"+ob1.t.isAlive());
System.out.println("Thread one is alive:"+ob2.t.isAlive());
System.out.println("Thread one is alive:"+ob3.t.isAlive());

System.out.println("Main thread exiting.");
}
}
追问
这两个类的代码两个类来回跳,掌握不了规律,能说明一下吗?依据什么呢
findme_xh
2011-04-20
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
代码蛮长的,还是自己看资料比较清楚,这里给你讲你也理解不清吧。。
建议查看Java中多线程工作那一章。
主要看run()函数与start()函数的关系,这里可以告诉你,他们的关系就如同,main函数与整个程序的关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Beyond少爷
2011-04-20 · TA获得超过245个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:107万
展开全部
简单的线程运行,你自己看下资料应该明白。遇到问题先自己解决。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
人_confidence
2011-04-20
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
简单的线程问题,实现线程有两种方式:一是实现runnable接口,二是继承Thread. 更多的知识需要自己去解决,自己的问题才是根本问题
追问
这两个类的代码两个类来回跳,掌握不了规律,能说明一下吗?依据什么呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式