早教吧作业答案频道 -->其他-->
Java线程类问题写一个线程类MyThread,该线程实现了Runnable接口,写一个main方法,*用for循环创建3个线程对象。需求如下:*①利用线程类的构造函数输出:"创建线程3"。(备注:当创建
题目详情
Java 线程类问题
写一个线程类MyThread,该线程实现了Runnable接口,写一个main方法,
* 用for循环创建3个线程对象。需求如下:
*
① 利用线程类的构造函数输出:"创建线程3"。
(备注:当创建一个线程的时候,标记为1,再次创建一个线程的时候,标记为2,
所以输出的"创建线程3"就是创建的第三个线程)
② 在run方法中输出:“线程X :计数Y”,当执行次数达到6次的时候,退出。
(备注:其中“线程X”为第X个线程,“计数Y”为该线程的run方法执行了多少次)
第一部分我做出来了
但是第二部部分没一点思路
知道的请告诉在下思路 谢谢
写一个线程类MyThread,该线程实现了Runnable接口,写一个main方法,
* 用for循环创建3个线程对象。需求如下:
*
① 利用线程类的构造函数输出:"创建线程3"。
(备注:当创建一个线程的时候,标记为1,再次创建一个线程的时候,标记为2,
所以输出的"创建线程3"就是创建的第三个线程)
② 在run方法中输出:“线程X :计数Y”,当执行次数达到6次的时候,退出。
(备注:其中“线程X”为第X个线程,“计数Y”为该线程的run方法执行了多少次)
第一部分我做出来了
但是第二部部分没一点思路
知道的请告诉在下思路 谢谢
▼优质解答
答案和解析
interrupt(), stop(), suspend() 都不推荐再用,而是应该让 run 方法正常地退出,如果你打算让它循环,就在 run() 方法内用一个循环(比如 while (indicator) 循环让它在标记位 indicator 改变后退出来)。
通过interrupt 对比那个线程是不是当前线程,这种做法很怪异,不是在 java 中用 == 就可以比较的么 thread == Thread.currentThread() 就是当前线程,再说了,怎么会是当前线程来决定当前线程的命运呢?管理线程应该和工作线程分开才合适。
现在这个代码是先尝优雅地退出,之后,强制退出,这说明作者不确信他写的代码能正常地退出,那么什么情况下不能正常地退出呢,如果是 socket 阻塞了,那我们给一个 timeout,如果是数据库阻塞了,我们允许强制退出,如果不是这种外界资源导致的阻塞,我们的程序就应该保证能正常地退出,否则就是质量问题。另外,interrupt 之后出现的异常完全不应该 e.printStackTrace() 因为你应该确信错误是什么,就直接打印出一段类似“线程未在指定时间内退出,强制终止它”的消息。
interrupt() 之后再 join() 看起来不适合,不过,可能只是为了保险起见。反正看不去哪里不确信。
如果你想等几个线程都完成之后你的主线程才继续,那么代码应该时先把工作线程都启动,全都启动之后再跑循环 workerThreadX.join() 把几个工作线程都调用一次 .join(),(注意先把所有线程启动,再来 join),那些工作线程应该自己根据标记位来退出,或者工作完成了后退出。
通过interrupt 对比那个线程是不是当前线程,这种做法很怪异,不是在 java 中用 == 就可以比较的么 thread == Thread.currentThread() 就是当前线程,再说了,怎么会是当前线程来决定当前线程的命运呢?管理线程应该和工作线程分开才合适。
现在这个代码是先尝优雅地退出,之后,强制退出,这说明作者不确信他写的代码能正常地退出,那么什么情况下不能正常地退出呢,如果是 socket 阻塞了,那我们给一个 timeout,如果是数据库阻塞了,我们允许强制退出,如果不是这种外界资源导致的阻塞,我们的程序就应该保证能正常地退出,否则就是质量问题。另外,interrupt 之后出现的异常完全不应该 e.printStackTrace() 因为你应该确信错误是什么,就直接打印出一段类似“线程未在指定时间内退出,强制终止它”的消息。
interrupt() 之后再 join() 看起来不适合,不过,可能只是为了保险起见。反正看不去哪里不确信。
如果你想等几个线程都完成之后你的主线程才继续,那么代码应该时先把工作线程都启动,全都启动之后再跑循环 workerThreadX.join() 把几个工作线程都调用一次 .join(),(注意先把所有线程启动,再来 join),那些工作线程应该自己根据标记位来退出,或者工作完成了后退出。
看了 Java线程类问题写一个线程...的网友还看了以下:
“设X,Y为两个相互独立的随机变量,U=g(X),V=h(Y),则U与V独立,g和h为任意实函数” 2020-04-06 …
设{X(t),t>=0}是正交增量过程,X(0)=0,V是标准正态随机变量,若对任意的t>=0,X 2020-05-13 …
一个mathematica程序添加作图语句Clear[x,y,n,h,S1,S2,S3,S4,i] 2020-05-16 …
设Φ(u,v)具有连续偏导数,证明由方程Φ(cx-az,cy-bz)=0所确定的函数z=f(x,y 2020-05-17 …
用matlab画一个函数的三维图像。sqrt(u^2+v^2)d0时,h=0,画出h与u、v的三维 2020-07-09 …
四面放坡土方到底怎么计算,我怎么看到好几个公式比如V=1/3(S1+S2+√(S1S2))h,V= 2020-07-15 …
V=(a+2c+KH)(b+2c+KH)H+1/3K2H3,V=h/3(S上+S下+S上S下开根号 2020-07-19 …
做自变量与因变量变换:u=x*2+y^2,v=1/x+1/y,w=lnz-(x+y)变换方程y∂z 2020-07-25 …
关于二元复合函数的一阶偏导公式的疑问若z=f(u,v),u=g(x,y),v=h(x,y)有:∂z 2020-07-25 …
高数定理多元隐函数方程组中例如F(x,y,u,v)=0高数定理多元隐函数方程组中例如F(x,y,u, 2020-11-01 …