首先能确定你的代码没有问题,其中有一个警告是你的sleep没有以静态方式调用;
10年积累的成都网站设计、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有宜兴免费网站建设让你可以放心的选择与我们合作。
this是指当前类的一个对象,你的mythread类中根本就没有sleep方法,谈何调用勒;
用t来调用不是出现错误,而是一个警告
the static method sleep(long) from the type thread should be accessed in a static way并提供了两种fix方法。
一个静态方法需要以一个静态方式去访问调用,如果你使用该类型的一个实例去调用,也是可以的,不过这就违背了设计静态关键字的意愿了,静态方法或变量是先于类构造之前就存在了。
R r=new R(); 没有必要,等于每个R对象运行时就会产生一个新的R对象,好在你没让它运行起来。否则内存递推很快就满了。
talentwei8899说的对,直接使用Thread.CurrentThread.sleep(1000);
休眠的是当前线程。
若想让进程休眠时间不同,休眠的时间可取个随机数。
1、java多线程调用同步方法时主程序或者后台服务Service程序两者必须有一个正在运行着,定时任务才会执行。
2、自动执行的任务可以设置开启或关闭定时,检查任务的这一开关处于开启状态。
3、源目录在定时的时间点如果没有变化,任务执行后不会留下日志,通过查看任务的最后执行时间确定任务到底执行了没有。
4、执行失败和没有执行不是同一回事,如果是执行失败则要分析失败原因。这是java多线程调用同步方法时,休眠后代码执行不到的原因。
import java.util.Scanner;
public class ThreadTest {
Scanner sc=new Scanner(System.in);
int a=0;
public static void main(String[] args) {
new ThreadTest().show();
}
private void show() {
System.out.println("请输入太上老君生日是哪一天?");
new Thread() {
public void run() {
a=sc.nextInt();
}
}.start();
new Thread() {
public void run() {
for(int i=0;i5;) {
try {
Thread.sleep(1000);
System.out.println(++i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(a!=-9000) {
System.out.println("太渣了!");
}else {
System.out.println("还行!");
}
System.out.println("要不要在玩一把? Y/N 来决定!");
sc=new Scanner(System.in);
if(sc.nextLine().equals("y")) {
show();
}else {
return;
}
}
}.start();
}
}