概述
怎么说呢,这个思路只是理想状态,,,
JAVA的线程是我们通过代码在控制的,但jvm是多线程的,也就是说不止我们建立的这两个线程,线程一旦进入睡眠状态,再次唤醒的时候,要重新排队,那么这一个阶段就是不可控的了。所以要实现你说的那种严格的输出顺序,我写了个例子:public class ThreadTest {
public static boolean flag = true;
public static void main(String [] args){
new Thread1().start();
new Thread2().start();
}
synchronized public static int out(boolean tf,int i,int j){
if(tf == flag){
System.out.println("thread"+i+"第" + j + "次");
flag = !flag;
return j + 1;
}
return j;
//
}
}
class Thread1 extends Thread{
@Override
public void run() {
int i = 0;
try {
while(true) {
i = ThreadTest.out(true,1,i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Thread2 extends Thread{
@Override
public void run() {
int i = 0;
try {
while(true) {
i = ThreadTest.out(false,2,i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
最后
以上就是甜美方盒为你收集整理的java 线程sleep_关于java中线程sleep的一个问题的全部内容,希望文章能够帮你解决java 线程sleep_关于java中线程sleep的一个问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复