第四章
为何应该避免使用线程组
竞态条件使得大多数方法废弃
package thread;
import java.util.Timer;
import java.util.TimerTask;
public class t201909101 {
static volatile int i = 1;
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
while (i<=20){
int j = 0;
while (j<i){
System.out.print("_");
j++;
}
System.out.println("*");
i++;
}
while (i<=40){
int j = i-20;
while (20-j>0){
System.out.print("_");
j++;
}
System.out.println("*");
i++;
}
i=1;
}
};
Timer timer = new Timer();
timer.schedule(task,0,10);
}
}
瞎写的
结果
_*
__*
___*
____*
_____*
______*
_______*
________*
_________*
__________*
___________*
____________*
_____________*
______________*
_______________*
________________*
_________________*
__________________*
___________________*
____________________*
___________________*
__________________*
_________________*
________________*
_______________*
______________*
_____________*
____________*
___________*
__________*
_________*
________*
_______*
______*
_____*
____*
___*
__*
_*
*
_*
__*
___*
____*
_____*
______*
_______*
________*
_________*
__________*
___________*
____________*
_____________*
______________*
_______________*
________________*
_________________*
__________________*
___________________*
____________________*
___________________*
__________________*
_________________*
________________*
_______________*
______________*
_____________*
____________*
___________*
__________*
_________*
________*
_______*
______*
_____*
____*
___*
__*
_*
*
不停的跑。。。
第五章
并发工具类是什么?
Executor接口的局限于克服
runnable的run和callabel的call区别
run()无返回值,call有返回值;
第六章
第七章
第八章