关于Java多线程

看了JavaAPI中对于Thread类的描述,其中有几点不是很明了,希望高手指点迷津....以下是API的原话:1,startpublicvoidstart()使该线程开... 看了Java API中对于Thread类的描述,其中有几点不是很明了,希望高手指点迷津....
以下是API的原话:
1,start
public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。

多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。

这是什么意思?尤其是第一,二句话中讲到:同时启动了两个线程??
展开
 我来答
宁小波特
2010-10-30 · 超过33用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:72万
展开全部
通过下面这个简单的例子,可以很好的说明,共有三个线程,一个main线程,t1和t2可以看到在t1,t2完成前,main线程已经运行完了,就是上面说的多个线程是并发执行的,多次启动同一个线程最简单的就是会产生数据的问题,自己打印试试
public class ThreadTest {

public static void main(String[] args) throws InterruptedException {
Thread t1=new MyThreadA();
Thread t2=new MyThreadB();//直接声明线程对象,

t1.start();

t2.start();
System.out.println(Thread.currentThread());//打印线程信息

}

}
class MyThreadA extends Thread{
public void run(){
int i=0;
while(i<20){
for(int j=0;j<10000000;j++);
i++;
System.out.println("i="+i);
}
}
}
class MyThreadB extends Thread{
public void run(){
char c='A';
while(c<'Z'){
for(int j=0;j<10000000;j++);
System.out.println("c="+c+" "+this.isDaemon());
c++;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhao61
2010-10-31 · TA获得超过1459个赞
知道小有建树答主
回答量:1065
采纳率:0%
帮助的人:862万
展开全部
结果是两个线程并发地运行

是指调用run方法的这个线程和新建线程并发执行,不是新产生了两个,只有一个新产生的。

多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。

这个原因很简单,因为线程结束后,这个线程拥有的资源回收了,当然不能重新启动了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
通顺还温顺丶榜首3115
2010-10-30 · TA获得超过216个赞
知道答主
回答量:129
采纳率:0%
帮助的人:76.3万
展开全部
首先java是支持多线程的,当运行一个主函数(main函数)的时候会创建并运行一个主线程,而要在主线程运行的同时再创建/运行一个同步线程的话,需要在主线程里显示地调用一个集成了Thread抽象类或实现了Runnable接口的类的start()方法。这个start()方法会在任务过程中调用你在类里面的run()方法的内容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式