我正在尝试使用thread.Run以及thread.start执行Thread进入Both方法
这里的情况 主类
Thread thread = new GetTimeZones();
ByImletingInterface thread21 = new ByImletingInterface();
thread21.getMailStarttime(5);
ByImletingInterface thread2 = new ByImletingInterface();
thread2.getMailStarttime(10);
thread.start();
new Thread(thread21).start();
new Thread(thread2).start();
线程1
public class ByImletingInterface implements Runnable {
private int starttime;
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(starttime * 1000);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e);
}
System.out.println("Checking Mail");
}
}
和其他therad
public class GetTimeZones extends Thread {
@SuppressWarnings("static-access")
@Override
public void run() {
// TODO Auto-generated method stub
Locale locale;
DateFormat timeforMatter;
DateFormat dateforMatter;
String timeoutput = null;
String dateoutput = null;
try {
java.util.Date date;
for (int i = 0; i < 20; i++) {
date = new Date();
locale = new Locale("en");
timeforMatter = DateFormat.getTimeInstance(DateFormat.DEFAULT,
locale);
dateforMatter = DateFormat.getDateInstance(DateFormat.DEFAULT,
locale);
//System.out.println(timeforMatter);
timeoutput = timeforMatter.format(date);
dateoutput = dateforMatter.format(date);
System.out.println(timeoutput);
System.out.println(dateoutput);
System.out.println();
try {
Thread.sleep(2000);
} catch (Exception e) {
// TODO: handle exception
}
}
} catch (Exception e) {
// TODO: handle exception
System.out.println(e);
e.printStackTrace();
}
super.run();
}
}
如何描述我的概率这两个课程都不需要但仍然给予它。
当我像往常一样将rad.start用于主类时。它有意识地执行了三个线程。
但是当我使用那个时,一个接一个地执行。意味着它的同步。为什么会这样?
答案 0 :(得分:3)
当你调用run()
方法时,你在当前线程上运行它,所以它当然会逐个运行,因为只有一个线程(每个run()
方法都会被执行在前一个完成之后)。
只有当您调用start()
时,才会创建新线程并在该新线程中执行run()
方法。