线程的优先级以及休眠问题

媛猿 2018-07-15 12:13:10
在下是一个在校学生,学艺不精,求学问道。
代码如下:
package test.wang;

public class Thead_Test implements Runnable{
private int num;
public int getNum() {
return num;
}

private Thread thread;

public Thead_Test(){
num = 99;
new Thead_Test2(this);
thread = new Thread(this);
thread.start();
}

@Override
public void run() {
while(true){
num--;

if(num < 1){
System.out.println("test over!");
}else{
System.out.println(num);
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

class Thead_Test2 implements Runnable{
private Thead_Test test;
private Thread thread;
public Thead_Test2(Thead_Test thead_Test){
this.test = thead_Test;
thread = new Thread(this);
thread.start();
}

public void run() {
while(true){
int num = test.getNum();
System.out.println(" " + num);
try {
thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

我在另一个类里将Thead_Test实例化,然后结果输出会出现以下情况:
99
98
97
98
96
96
95
95
94
94
93
93
92
93
...全文
581 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Surrin1999 2018-08-20
  • 打赏
  • 举报
回复
没有加同步锁就会这样子 某个线程刚输出完准备自减 还没来得及自减 就被另一个线程抢走了CPU控制权 你这里就是这个样子 解决方法就是在自减 输出部分加同步锁synchronized {......} 网上找点抢票问题的例子做做就懂了
济南大飞哥 2018-08-06
  • 打赏
  • 举报
回复
代码放代码块里再发出来吧,没有格式,看的头疼。
琳儿丶 2018-08-03
  • 打赏
  • 举报
回复
建议研究一下多线程的同步问题,某一段代码或某一个类或方法,如果没有加synchronized修饰的话,是允许多线程同时访问的,多个线程对同一个数据进行修改,数据就有可能发生错误,为了保证数据不出错,你需要给相应的代码块或方法加上synchronized这个关键字,它就相当于一把锁,某个线程访问此段代码时,就拿到了这把锁,其他的线程就不允许访问了,需要排队等候,等该线程运行完了,下一个线程才能继续访问。
wenjunxp2004 2018-07-20
  • 打赏
  • 举报
回复
用AtomicInteger吧,
遇见1995 2018-07-19
  • 打赏
  • 举报
回复
num哪里加锁.
synchronized
private synchronized int num;
public synchronized int getNum() {
return num;
}
weixin_39048951 2018-07-19
  • 打赏
  • 举报
回复
getNum +synchronized
  • 打赏
  • 举报
回复
这里需要用到线程同步锁
verejava 2018-07-15
  • 打赏
  • 举报
回复
并发编程 之 线程 售票排队例子

http://www.verejava.com/?id=17236617240060

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧