java - 如何在多个线程不同步的情况下检查功能
问题描述
考虑这段代码:
public class test2 {
public static void main(String[] args) throws Exception{
Thread t1 = new Thread(new Runnable() {
public void run() {
for(int i = 0; i<1000000; i++) {
}
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
Out.println("Counter" +" "+ i);
}
});
t1.start();
t2.start();
}
}
此代码用于完成此任务:
实现一个程序,其中线程将计数器(静态字段)递增 1000000 次。另一个线程应立即输出相同的计数器,而无需等待第一个线程结束。
我的代码对吗?我问的原因是因为输出始终为 0,我不确定这是否正确。当没有同步播放时,我对如何检查代码的功能感到困惑。
解决方案
问题是您的代码缺少必填static
字段(例如i
,在下面给出的代码中)。
class Main {
// Counter
static int i = 0;
public static void main(String[] args) throws Exception {
Thread t1 = new Thread(new Runnable() {
public void run() {
for (i = 0; i < 1000000; i++) {
}
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
System.out.println("Counter" + " " + i);
}
});
t1.start();
t2.start();
}
}
输出:
Counter 8588
推荐阅读
- asp.net-mvc - 发布后特定视图不更新内容
- ruby-on-rails - Rails ActiveModel 使用单类设计 belongs_to 和 has_many
- python - 类变量引用本身?
- javascript - React Hooks 可以有方法吗?
- python - 将一维 Numpy 数组作为行添加到 DataFrame
- java - 逐个扩展类扩展另一个类是一个好习惯吗?
- asp.net-mvc - 找不到asp.net核心页面
- swift4 - 没有让 navigationController?.pushViewController 工作但存在吗?
- node.js - 验证 node.js 文件使用的最佳方法是什么?
- android - 无法从 Firestore 检索对象