没有同步的共享资源成功

时间:2016-06-02 13:19:41

标签: java multithreading synchronization executorservice scheduledexecutorservice

在下面的代码中,CWriteData类将数据写入文件,CBelowThreshold读取同一文件并打印一些数据,CAboveThreshold也读取同一文件并打印一些 数据

我希望代码崩溃,因为我没有使用synchronized块,但是当我运行代码时它正常工作。

你能解释为什么代码尽管文件在三个线程之间共享并且没有同步,但它没有崩溃

代码

public static void main(String[] args) throws IOException, InterruptedException {

    file = IOCtrl.createFile("sharedRes.txt", "c:" + File.separator);

    ScheduledExecutorService executor = Executors.newScheduledThreadPool(3);

    //synchronized (file) {
        executor.schedule(new CWriteData(file), 0, TimeUnit.SECONDS);
    //}

    //synchronized (file) {
        executor.schedule(new CBelowThreshold(file), 1, TimeUnit.SECONDS);
    //}

    //synchronized (file) {
        executor.schedule(new CAboveThreshold(file), 1, TimeUnit.SECONDS);
    //}
}

0 个答案:

没有答案