用JAVA写一个多线程程序

h_zai888 2012-03-24 12:47:16
用JAVA写一个多线程程序,写四个线程,二个线程对这个变量++,另外两个对这个变量变量--,输出。
大家活跃起来吧
...全文
182 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
h_zai888 2012-03-24
  • 打赏
  • 举报
回复
人呢?快来人呀
MiceRice 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 h_zai888 的回复:]
哥呀 我就是不会在到这问呢 会的话我浪费这时间干什么呀?修改了还是不行的呀?
[/Quote]

不会啊,我修改后,可以看到大量数据在跳动,你看不到效果??

......
-10011
-10012
-10013
-10014
-10015
-10014
-10013
-10012
-10011
-10010
-10009
-10008
-10007
......
h_zai888 2012-03-24
  • 打赏
  • 举报
回复
就是四个线程随机的++ -- 每个线程都在走
达达拉 2012-03-24
  • 打赏
  • 举报
回复
LS代码有错?LZ要什么结果?
h_zai888 2012-03-24
  • 打赏
  • 举报
回复
哥呀 我就是不会在到这问呢 会的话我浪费这时间干什么呀?修改了还是不行的呀?
MiceRice 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 h_zai888 的回复:]
就是用JAVA写一个多线程程序,写四个线程,二个线程对这个变量++,另外两个对这个变量变量-- 结果肯定不是0的呀 线程是随机的咋么可能是0呀?
[/Quote]

你认真学过线程么?

你只是想看看很多数字跳来跳去是吧?

那么把这两段修改下:

// 负责增加的
Runnable adder = new Runnable() {
public void run() {
for (int i = 0; i < 1e5; i++) {
inc();
System.out.println(counter);
}
}
};
// 负责减少的
Runnable decer = new Runnable() {
public void run() {
for (int i = 0; i < 1e5; i++) {
dec();
System.out.println(counter);
}
}
};

h_zai888 2012-03-24
  • 打赏
  • 举报
回复
我要的不是最后的结果 而是要过程 如
1
2
3
4
3
4
5
4
3
2这样的
h_zai888 2012-03-24
  • 打赏
  • 举报
回复
就是用JAVA写一个多线程程序,写四个线程,二个线程对这个变量++,另外两个对这个变量变量-- 结果肯定不是0的呀 线程是随机的咋么可能是0呀?
  • 打赏
  • 举报
回复
求代码帖!!
h_zai888 2012-03-24
  • 打赏
  • 举报
回复
咋么不是继承runnable呀?没有run()方法啊
MiceRice 2012-03-24
  • 打赏
  • 举报
回复
++ 和 -- 的总次数一样,最终当然是 0

你可以自行修改:for (int i = 0; i < 1e6; i++) 中的循环次数
h_zai888 2012-03-24
  • 打赏
  • 举报
回复
咋么不++ --呀就输出个0
MiceRice 2012-03-24
  • 打赏
  • 举报
回复

public class MultiIncDec {

private static int counter = 0;

public static void main(String[] args) {
// 负责增加的
Runnable adder = new Runnable() {
public void run() {
for (int i = 0; i < 1e6; i++)
inc();
}
};
// 负责减少的
Runnable decer = new Runnable() {
public void run() {
for (int i = 0; i < 1e6; i++)
dec();
}
};

// 定义线程
Thread[] ts = new Thread[4];
ts[0] = new Thread(adder);
ts[1] = new Thread(adder);
ts[2] = new Thread(decer);
ts[3] = new Thread(decer);

// 启动
for (Thread t:ts) {
t.start();
}

// 等待结束
for (Thread t:ts) {
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

// 输出结果
System.out.println("Result: " + counter);
}

public static synchronized void inc() {
counter++;
}

public static synchronized void dec() {
counter--;
}

}
MiceRice 2012-03-24
  • 打赏
  • 举报
回复
很容易的代码啊,你认为问题是啥?
h_zai888 2012-03-24
  • 打赏
  • 举报
回复
哥哥姐姐们 快来人呀 帮帮忙呀!

51,402

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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