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.");
}
}
前两个类写重复了,不好意思 展开
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.");
}
}
前两个类写重复了,不好意思 展开
4个回答
展开全部
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.");
}
}
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.");
}
}
追问
这两个类的代码两个类来回跳,掌握不了规律,能说明一下吗?依据什么呢
展开全部
代码蛮长的,还是自己看资料比较清楚,这里给你讲你也理解不清吧。。
建议查看Java中多线程工作那一章。
主要看run()函数与start()函数的关系,这里可以告诉你,他们的关系就如同,main函数与整个程序的关系。
建议查看Java中多线程工作那一章。
主要看run()函数与start()函数的关系,这里可以告诉你,他们的关系就如同,main函数与整个程序的关系。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单的线程运行,你自己看下资料应该明白。遇到问题先自己解决。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单的线程问题,实现线程有两种方式:一是实现runnable接口,二是继承Thread. 更多的知识需要自己去解决,自己的问题才是根本问题
追问
这两个类的代码两个类来回跳,掌握不了规律,能说明一下吗?依据什么呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询