相关疑难解决方法(0)

java线程的结果不一致

我有一个实现runnable的线程类和一个int计数器作为实例变量.两个同步方法添加和子.当我以某种方式运行我的测试类时,它会在几次打印错误的结果.据我所知,当一个方法同步时,整个对象将被锁定以供其他线程访问,每当我们得到相同的结果时,这个逻辑是什么?有些情况并非如此.我错过了什么吗?

我的机器是Windows 7,64位.

 public class ThreadClass implements Runnable {

        int counter = 0;

        @Override
        public void run() {
            add();
            sub();
        }

        public synchronized void add() {
            System.out.println("ADD counter" + (counter = counter + 1));
        }

        public synchronized void sub() {
            System.out.println("SUB counter" + (counter = counter - 1));
        }
    }
Run Code Online (Sandbox Code Playgroud)

识别TestClass

public class ThreadTest {

    public static void main(String args[]) {
        ThreadClass tc = new ThreadClass();
        Thread tc0 = new Thread(tc);
        tc0.start();
        tc0.setPriority(Thread.MAX_PRIORITY);
        Thread tc1 = new Thread(tc);
        tc1.start();
        tc1.setPriority(Thread.NORM_PRIORITY); …
Run Code Online (Sandbox Code Playgroud)

java multithreading

6
推荐指数
2
解决办法
1725
查看次数

标签 统计

java ×1

multithreading ×1