各位高手:
是这样的。小弟目前在学习多线程,然后呢,学得有点迷糊,忘各位不吝赐教。首先,我想问的是,10个同等优先级的线程,他们里面假设有for循环,如下所示
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());}
那么我想问的是,他们是一个线程执行完毕,再执行另外的线程呢,还是这个线程执行到一定程度,会将运行权交给另外的线程来执行。像下面这个代码:
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());
try {
sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
我知道是每个线程运行一会,但是想开始的那个代码,我就不知道到底是一个线程一次性执行完呢,还是一个线程运行一会,另一个线程再运行一会。
是这样的。小弟目前在学习多线程,然后呢,学得有点迷糊,忘各位不吝赐教。首先,我想问的是,10个同等优先级的线程,他们里面假设有for循环,如下所示
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());}
那么我想问的是,他们是一个线程执行完毕,再执行另外的线程呢,还是这个线程执行到一定程度,会将运行权交给另外的线程来执行。像下面这个代码:
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());
try {
sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
我知道是每个线程运行一会,但是想开始的那个代码,我就不知道到底是一个线程一次性执行完呢,还是一个线程运行一会,另一个线程再运行一会。
比如
public static void main(String[] rags) {
new MitiSay("A").start();
new MitiSay("B").start();
}
package tryTest;public class MyThread extends Thread { public static void main(String args[]) {
MyThread[] t = new MyThread[10]; for (int i = 0; i < t.length; i++) {
t[i] = new MyThread("MyThread" + i + "\t");
t[i].start();
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
} }
} String s; public MyThread(String s) {
this.s = s; } public void run() {
for(int i=0;i<10;i++){
System.out.print("线程:"+s);
}
System.out.println();
}
}
System.out.println(i + " " + getName());
try {
sleep((int) Math.random() * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}这里只有一个线程
我的意思是说,要是没有sleep的话,那是一个线程运行完毕,再运行其他线程呢,还是一个线程运行一会,在没运行完毕的时候,就将运行权交给了其他线程
比如
public static void main(String[] rags) {
new MitiSay("A").start();
new MitiSay("B").start();
}