关于Java多线程
看了JavaAPI中对于Thread类的描述,其中有几点不是很明了,希望高手指点迷津....以下是API的原话:1,startpublicvoidstart()使该线程开...
看了Java API中对于Thread类的描述,其中有几点不是很明了,希望高手指点迷津....
以下是API的原话:
1,start
public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。
多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
这是什么意思?尤其是第一,二句话中讲到:同时启动了两个线程?? 展开
以下是API的原话:
1,start
public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。
多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
这是什么意思?尤其是第一,二句话中讲到:同时启动了两个线程?? 展开
3个回答
展开全部
通过下面这个简单的例子,可以很好的说明,共有三个线程,一个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++;
}
}
}
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++;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果是两个线程并发地运行
是指调用run方法的这个线程和新建线程并发执行,不是新产生了两个,只有一个新产生的。
多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
这个原因很简单,因为线程结束后,这个线程拥有的资源回收了,当然不能重新启动了。
是指调用run方法的这个线程和新建线程并发执行,不是新产生了两个,只有一个新产生的。
多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
这个原因很简单,因为线程结束后,这个线程拥有的资源回收了,当然不能重新启动了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先java是支持多线程的,当运行一个主函数(main函数)的时候会创建并运行一个主线程,而要在主线程运行的同时再创建/运行一个同步线程的话,需要在主线程里显示地调用一个集成了Thread抽象类或实现了Runnable接口的类的start()方法。这个start()方法会在任务过程中调用你在类里面的run()方法的内容。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询