线程sleep()问题

我知道sleep()方法可以使线程休眠,并把机会让给别的线程(优先级低的,同级,高的),但我碰到一个问题例如classthreadqextendsthread{publi... 我知道sleep()方法可以使线程休眠,并把机会让给别的线程(优先级低的,同级,高的),但我碰到一个问题例如
class threadq extends thread
{
public void run(){for(int i=0;i<5;i++)system.out.println(i);}
public static void main(String[],args)
{
threadq a =new threadq();
threadq b =new threadq();
a.star();
sleep(1000);
b.star();
}
}
当这程序里没有sleep()方法时,两个线程执行时,互不干扰,随即执行,并没有谁影响谁啊,现在你加个sleep(),让第一个休眠,机会让给第二个线程,可是他们本来就没有什么联系,何谈机会转让,sleep()方法有没有不是一样吗,还有我看到过给线程设优先级,低的必须再高的执行完后才能执行,sleep()确实起到了作用,但是同级和优先级高的怎么解释呢,同级(什么是同级是我说的这样吗,希望大家也讲一下)不就是我刚才写的那个程序少个sleep()方法吗,两个线程之间不是没有影响吗,哪里机会转让呢,高级的都自己先运行了,弄个sleep()方法,要么也是他转让给别人,怎么会是别人转让给他呢,这怎么解释呢,线程sleep()针对同一个数据还不同数据,都一样的都有这效果,那么sleep()机会转让是在什么情况下让那些别的受限制线程获得机会执行呢 ,从而让其他线程获得访问数据的机会并完成数据访问的任务,谢谢大家帮忙解释下
展开
 我来答
lengon
2012-01-16 · TA获得超过2125个赞
知道小有建树答主
回答量:1769
采纳率:0%
帮助的人:1023万
展开全部
Thread_example t1=new Thread_example(1,"a"); //线程a为输出奇数,起始数为1
Thread_example t2=new Thread_example(2,"b"); //线程b为输出偶数,起始数为2
t1.setPriority(5); //设置优先级???
t2.setPriority(1);
设置优先级。当你的线程池满了的时候才会有线程受限。。那样这样的优先级就能体现出来。

再者,你上面的程序中的sleep(1000);并不是a暂停了一秒,而是主线程暂停了一秒,一秒之后才会运行你的b.start();导致你以为是线程转让了。暂停的过程中,a还是继续运行的
追问
如果是a.sleep(1000),是不是就转让了,你能再看看我的问题吗,能再讲的更详细一点吗,谢谢了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式