Java线程的start方法能调用多次吗?

importjavax.swing.*;importjava.awt.Color;importjava.awt.Image;importjava.awt.Toolkit;... import javax.swing.*;

import java.awt.Color;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.*;

public class Seven extends JFrame implements Runnable{

public static void main(String[] args){
Seven Home=new Seven();
final Thread t=new Thread(Home);

Timer time=new Timer(4000,new ActionListener(){
public void actionPerformed(ActionEvent e) {
t.start();
System.out.println("启动一次");
}
});
time.start();

Home.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Home.setResizable(false);
Home.setBackground(Color.WHITE);
Home.setBounds(260,220,780,610);
Home.setVisible(true);

}

public void run(){
System.out.println("123");
}

}

要是可以的话为什么第二次会出错呀?
展开
 我来答
shala202020
推荐于2017-09-11 · TA获得超过4159个赞
知道小有建树答主
回答量:1410
采纳率:85%
帮助的人:372万
展开全部
一个线程对象只能调用一次start方法.从new到等待运行是单行道,所以如果你对一个已经启动的线程对象再调用一次start方法的话,会产生:IllegalThreadStateException异常.
可以被重复调用的是run()方法。
Thread类中run()和start()方法的区别如下:
run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;
start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;
iris1121
2007-04-29 · TA获得超过268个赞
知道答主
回答量:291
采纳率:0%
帮助的人:228万
展开全部
一个线程对象只能调用一次start方法.从new到等待运行是单行道,所以如果你对一个已经启动的线程对象再调用一次start方法的话,会产生:IllegalThreadStateException异常
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
信使的爱0
2018-07-11
知道答主
回答量:13
采纳率:0%
帮助的人:1.1万
展开全部

因为通过Thread实例的start(),一个Thread的实例只能产生一个线程。一个Thread的实例一旦调用start()方法,这个实例的started标记就标记为true。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式