码迷,mamicode.com
首页 > 编程语言 > 详细

java并发编程实战第一章

时间:2018-01-02 23:30:57      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:print   adc   ams   containe   params   ack   pack   安全   pre   

线程不安全代码测试
    private static class UnsafeSequence {
        private int value;

        public int getNext() {
            return value++;
        }
    }

使用两个线程分别调用上面的getNext方法1000次,出现了一次线程不安全的情况,在转出的结果中有两个1311:

 

 
技术分享图片
图片.png

 

原因分析,与书上说的一致:

 

 
技术分享图片
图片.png


完整的代码

import java.io.PrintWriter;
import java.util.concurrent.CountDownLatch;

/**
 * Created by luohao07 on 2018/1/2.
 */
public class UnsafeSequenceTest {

    public static void main(String[] args) throws Exception{
        UnsafeSequence unsafeSequence = new UnsafeSequence();
        PrintWriter out = new PrintWriter("out.txt");
        CountDownLatch countDownLatch = new CountDownLatch(2);
        new Thread() {
            @Override
            public void run() {
                for (int i = 0; i < 1000; i++) {
                    out.println(unsafeSequence.getNext() + " T1");
                }
                countDownLatch.countDown();
            }
        }.start();

        new Thread() {
            @Override
            public void run() {
                for (int i = 0; i < 1000; i++) {
                    out.println(unsafeSequence.getNext()+" T2");
                }
                countDownLatch.countDown();
            }
        }.start();

        countDownLatch.await();
        out.flush();
        out.close();
    }

    private static class UnsafeSequence {
        private int value;

        public int getNext() {
            return value++;
        }
    }
}

Timer执行定时任务
public class TimerTest {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("invoke....");
            }
        }, new Date(System.currentTimeMillis() + 5000));
    }
}

程序启动后5秒输出invoke....

java并发编程实战第一章

标签:print   adc   ams   containe   params   ack   pack   安全   pre   

原文地址:https://www.cnblogs.com/dudadi/p/8179181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!