问题描述
importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;classPerson{publicPerson(){System.out.println("*****我要先出来*****");}}publicclasstestdemo01{publicstaticvoidmain(Stringargs[]){for(inti=0;i<20;i++){ExecutorServiceps=Executors.newSingleThreadExecutor();ps.execute(newRunnable(){publicvoidrun(){try{Thread.sleep(100);}catch(InterruptedExceptione){e.printStackTrace();}System.out.print("0");}});}newPerson();}}
问题1:为何匿名对象会出现在for循环中的打印前面?java不是一行一行执行的吗?问题2:程序运行后,出现了线程死锁,无法退出,如何解决?谢谢各位大哥大姐了!!!祝我早日结贴!
解决方案
解决方案二:
1。对于单线程是java是一行一行的执行,而你这个多线程,谁知道先执行那个。2。你不关闭它怎么退出。ExecutorServiceshutdown()
解决方案三:
importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;classPerson{publicPerson(){System.out.println("*****我要先出来*****");}}publicclasstt{publicstaticvoidmain(Stringargs[]){for(inti=0;i<20;i++){ExecutorServiceps=Executors.newSingleThreadExecutor();ps.execute(newRunnable(){publicvoidrun(){try{Thread.sleep(100);}catch(InterruptedExceptione){e.printStackTrace();}System.out.print("0");}});ps.shutdown();}newPerson();}}OK
解决方案四:
多线程会先执行哪个说不定的.
解决方案五:
问题1:为何匿名对象会出现在for循环中的打印前面?java不是一行一行执行的吗?问题2:程序运行后,出现了线程死锁,无法退出,如何解决?你把线程放在for循环里面的啊,java线程不是一行一行执行的,执行顺序是不同的随机的出现死锁是由于多个线程强用同一个资源,为了实现线程同步,需要在对对象加锁!若是想要退出就按住Ctrl+C