Ⅰ java中起一个线程池 每秒开启3个线程 每个线程睡眠2秒 2秒之后关闭线程 !!!!
classmythreadextendsThread{
privateStringid;
/**
*
*/
publicmythread(Stringid){
//TODOAuto-generatedconstructorstub
this.id=id;
}
@Override
publicvoidrun(){
System.out.println(id+" 正在执行......Time:"+newSimpleDateFormat("yyyy-MM-ddhh:mm:ss").format(newDate()));
try{
this.sleep(2*1000);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println(id+" 关闭......Time:"+newSimpleDateFormat("yyyy-MM-ddhh:mm:ss").format(newDate()));
}
}
publicstaticvoidmain(String[]args)throwsException{
ThreadPoolExecutortpe=(ThreadPoolExecutor)Executors.newCachedThreadPool();
while(true){
for(inti=0;i<3;i++){
Stringid=UUID.nameUUIDFromBytes((i+"").getBytes()).toString();
tpe.execute(newmythread(id));
}
System.out.println("当前线程数为:"+tpe.getPoolSize());
Thread.sleep(1000);
}
}
Ⅱ JAVA中如何控制线程的启动与暂停
线程的状态表示线程正在进行的活动以及在此时间段内所能完成的任务.线程有创建,可运行,运行中,阻塞,死亡五中状态.一个具有生命的线程,总是处于这五种状态之一:
1.创建状态
使用new运算符创建一个线程后,该线程仅仅是一个空对象,系统没有分配资源,称该线程处于创建状态(new thread)
2.可运行状态
使用start()方法启动一个线程后,系统为该线程分配了除CPU外的所需资源,使该线程处于可运行状态(Runnable)
3.运行中状态
Java运行系统通过调度选中一个Runnable的线程,使其占有CPU并转为运行中状态(Running).此时,系统真正执行线程的run()方法.
4.阻塞状态
一个正在运行的线程因某种原因不能继续运行时,进入阻塞状态(Blocked)
5.死亡状态
线程结束后是死亡状态(Dead)
创建线程和启动线程并不相同,在一个线程对新线程的Thread对象调用start()方法之前,这个新线程并没有真正开始执行。Thread对象在其线程真正启动之前就已经存在了,而且其线程退出之后仍然存在。这可以让您控制或获取关于已创建的线程的信息,即使线程还没有启动或已经完成了。
通常在构造器中通过start()启动线程并不是好主意。这样做,会把部分构造的对象暴露给新的线程。如果对象拥有一个线程,那么它应该提供一个启动该线程的start()或init()方法,而不是从构造器中启动它。
结束Java线程
Java线程会以以下三种方式之一结束:
Java线程到达其run()方法的末尾。
Java线程抛出一个未捕获到的Exception或Error。
另一个Java线程调用一个弃用的stop()方法。弃用是指这些方法仍然存在,但是您不应该在新代码中使用它们,并且应该尽量从现有代码中除去它们。
当Java程序中的所有线程都完成时,程序就退出了。
Ⅲ JAVA-关于线程Sleep的问题!
1.在ThreadA 中的run中sleep不会影响System.out.println("Main thread is running....");
2.run方法执行完,线程就结束了
Ⅳ Java线程中的sleep方法作用是啥,啥时候用此方法
sleep(毫秒数)是Thread类的静态方法。
使用时:Thread.sleep(毫秒数);
如Thread.sleep(1000);该线程睡眠1秒钟版,之间此线程什权么都不做。
等1秒钟之后,继续余下代码执行。
不过线程是没有保证的。也许1秒钟之后,该线程没有转为可运行状态,也是可能的。
Ⅳ java如何用Runnable实现让这线程断断续续的休眠
R r=new R(); 没有必要,等于每个R对象运行时就会产生一个新的R对象,好在你没让它运行起来版。否则内存递推权很快就满了。
talentwei8899说的对,直接使用Thread.CurrentThread.sleep(1000);
休眠的是当前线程。
若想让进程休眠时间不同,休眠的时间可取个随机数。
Ⅵ java中如何线程的睡眠与唤醒
classMyThreadextendsThread
{
publicMyThread()
{
super();
}
publicMyThread(Stringname)
{
super(name);
}
publicvoidrun()
{
for(inti=0;i<10;i++)
{
System.out.println(super.getName()+":"+i);
try
{
sleep(500);
}
catch(InterruptedExceptione)
{
System.out.println("线程被叫醒");
}
}
}
}
publicclassSleepTest
{
publicstaticvoidmain(String[]args)
{
MyThreadthread1=newMyThread("第1个线程");
MyThreadthread2=newMyThread("第2个线程");
thread1.start();
thread2.start();
}
}