class Foo{
private int x = 100;
public int getX(){
return x;
}
public void fix(int y){
x = x - y;
}
}
class MyRunnable implements Runnable{
Foo foo = new Foo();
public void run(){
for(int i=0;i<3;i++){
synchronized(this){
fix(30);
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+": "+foo.getX());
}
}
}
public void fix(int x){
foo.fix(x);
}
public static void main(String args[]){
MyRunnable r = new MyRunnable();
Thread ta = new Thread(r,"Thread-A");
Thread tb = new Thread(r,"Thread-B");
ta.start();
tb.start();
}
}//试了多次,结果是:
Thread-A: 70
Thread-A: 40
Thread-A: 10
Thread-B: -20
Thread-B: -50
Thread-B: -80应该可以如下这样显示的吧?
Thread-A: 70
Thread-B: 40
Thread-A: 10
Thread-B: -20
Thread-A: -50
Thread-B: -80
解决方案 »
- 执行完查询之后是否需要显式调用PreparedStatement对象和ResultSet对象的close()方法?
- Windows下创建的txt文件到solaris上用java读取变成乱码~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 放出自己所有积分跪求一个jar调用问题解决办法~!
- java中操作ftp比较好点的jar,请推荐一下
- 关于TAB不起作用的问题
- 想问问sendUrgentData这个方法是怎么用的
- 如何将中文文件存入数据库?是文件,不是表单,谢谢!!
- JFileChooser一问?
- 老大们帮我看看。wls cmp20 问题!!
- 请教一个Swing代码的错误调试方法.
- 字符串拆分问题
- HashMap合并问题
Thread-B: 40
Thread-A: 10
Thread-B: -20
Thread-A: -50
Thread-B: -80
这是我的运行结果