大家进来帮忙看看。IllegalThreadStateException

smilingliuwei 2014-05-28 02:49:03


package com.smilingliuwei.thread;

import java.util.Vector;


public class MainThread
{
public static final int THREAD_NUM = 100;

public static void main( String[] args )
{
System.out.println( " -- 主线程启动" );

try
{
SingleTon obj = new SingleTon();
Vector<Thread> threads = new Vector<Thread>();

//初始化线程
for ( int i = 1; i <= THREAD_NUM; i++ )
{
if ( i < 10 )
{
threads.add( new ChaildThread( "Thread_00" + i, obj, 10, 1 ) );
}
else if ( ( i > 10 ) && ( i < 100 ) )
{
threads.add( new ChaildThread( "Thread_0" + i, obj, 10, 1 ) );
}
else
{
threads.add( new ChaildThread( "Thread_" + i, obj, 10, 1 ) );
}
}

//开启线程
for ( int i = 0; i < THREAD_NUM; i++ )
{
threads.get( 0 ).start();
}
}
catch ( Exception ex )
{
System.out.println( "\n\n -- 主线程出错了" );
ex.printStackTrace();
}

System.out.println( " -- 主线程结束" );
}
}

/* 执行结果

-- 主线程启动
-- 线程启动 Thread_001


-- 主线程出错了
-- 主线程结束
-- Thread_001 等待倒计时:10java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:595)
at com.smilingliuwei.thread.MainThread.main(MainThread.java:39)

-- Thread_001 等待倒计时:9
-- Thread_001 等待倒计时:8
-- Thread_001 等待倒计时:7
-- Thread_001 等待倒计时:6
-- Thread_001 等待倒计时:5
-- Thread_001 等待倒计时:4
-- Thread_001 等待倒计时:3
-- Thread_001 等待倒计时:2
-- Thread_001 等待倒计时:1
-- 线程结束 Thread_001

*/

...全文
113 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuebichongkafei 2014-05-29
  • 打赏
  • 举报
回复
引用 1 楼 lymoge 的回复:
第39行. start public void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。 抛出: IllegalThreadStateException - 如果线程已经启动。 另请参见: run(), stop()
这也能看出来??我怎么就没有看出来调用了两次start呢? 楼主贴线程类源码撒!run方法是不是只有打印输出??? 另外将集合内容打印一下,看里面的线程名称一下,就贴一个测试类代码,又没法拿过来调
CoffeeBean 2014-05-28
  • 打赏
  • 举报
回复
threads.get( 0 ).start(); 39行笔误了吧,第0个线程启动两遍了
lymoge 2014-05-28
  • 打赏
  • 举报
回复
第39行. start public void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。 抛出: IllegalThreadStateException - 如果线程已经启动。 另请参见: run(), stop()

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧