Java 当我使用volatile和AtomicInteger时,实践发现输出应该有代码的输出消失
当我使用volatile和AtomicInteger实践发现输出应该有代码消失的输出时,我希望有人能帮我解决这个问题 它应该有输出,但输出消失了,代码如下:Java 当我使用volatile和AtomicInteger时,实践发现输出应该有代码的输出消失,java,volatile,atomicinteger,Java,Volatile,Atomicinteger,当我使用volatile和AtomicInteger实践发现输出应该有代码消失的输出时,我希望有人能帮我解决这个问题 它应该有输出,但输出消失了,代码如下: package volatil; import java.util.concurrent.atomic.AtomicInteger; public class Count extends Thread { // private static volatile AtomicInteger key =new AtomicInteger
package volatil;
import java.util.concurrent.atomic.AtomicInteger;
public class Count extends Thread {
// private static volatile AtomicInteger key =new AtomicInteger(0);
private static AtomicInteger key = new AtomicInteger(1);
private static void add() {
for (int i = 0; i < 1000; i++) {
key.incrementAndGet();
}
System.out.println("now key is " + key);
}
@Override
public void run() {
add();
}
public static void main(String[] args) {
Count[] counts = new Count[10];
for (int i = 0; i < 10; i++) {
counts[i] = new Count();
}
for (int i = 10; i < 10; i++) {
counts[i].start();
}
}
}
package volatil;
public class Count extends Thread {
private static volatile int key;
private static void add() {
for (int i = 0; i < 1000; i++) {
key++;
}
System.out.println("now key is " + key);
}
@Override
public void run() {
add();
}
public static void main(String[] args) {
Count[] counts = new Count[10];
for (int i = 0; i < 10; i++) {
counts[i] = new Count();
}
for (int i = 10; i < 10; i++) {
counts[i].start();
}
}
}
包装挥发物;
导入java.util.concurrent.AtomicInteger;
公共类计数扩展线程{
//私有静态volatile AtomicInteger密钥=新的AtomicInteger(0);
私有静态AtomicInteger密钥=新的AtomicInteger(1);
私有静态void add(){
对于(int i=0;i<1000;i++){
key.incrementAndGet();
}
System.out.println(“现在的键是”+键);
}
@凌驾
公开募捐{
添加();
}
公共静态void main(字符串[]args){
计数[]计数=新计数[10];
对于(int i=0;i<10;i++){
计数[i]=新计数();
}
for(int i=10;i<10;i++){
计数[i]。开始();
}
}
}
此代码相同,代码如下:
package volatil;
import java.util.concurrent.atomic.AtomicInteger;
public class Count extends Thread {
// private static volatile AtomicInteger key =new AtomicInteger(0);
private static AtomicInteger key = new AtomicInteger(1);
private static void add() {
for (int i = 0; i < 1000; i++) {
key.incrementAndGet();
}
System.out.println("now key is " + key);
}
@Override
public void run() {
add();
}
public static void main(String[] args) {
Count[] counts = new Count[10];
for (int i = 0; i < 10; i++) {
counts[i] = new Count();
}
for (int i = 10; i < 10; i++) {
counts[i].start();
}
}
}
package volatil;
public class Count extends Thread {
private static volatile int key;
private static void add() {
for (int i = 0; i < 1000; i++) {
key++;
}
System.out.println("now key is " + key);
}
@Override
public void run() {
add();
}
public static void main(String[] args) {
Count[] counts = new Count[10];
for (int i = 0; i < 10; i++) {
counts[i] = new Count();
}
for (int i = 10; i < 10; i++) {
counts[i].start();
}
}
}
包装挥发物;
公共类计数扩展线程{
私有静态易失性int密钥;
私有静态void add(){
对于(int i=0;i<1000;i++){
key++;
}
System.out.println(“现在的键是”+键);
}
@凌驾
公开募捐{
添加();
}
公共静态void main(字符串[]args){
计数[]计数=新计数[10];
对于(int i=0;i<10;i++){
计数[i]=新计数();
}
for(int i=10;i<10;i++){
计数[i]。开始();
}
}
}
for循环中的值错误。这:
for (int i = 10; i < 10; i++)
for(int i=10;i<10;i++)
应该是:
for (int i = 0; i < 10; i++)
for(int i=0;i<10;i++)