JAVA经典面试题:四线程写四个文件、三线程循环有序打印ABC

该博客讨论了两个Java线程编程问题:一是如何使用四线程同步写入四个文件,使每个线程在不同文件中循环写入1到4,二是如何创建三个线程以ABC顺序循环打印。博主分析了一个存在bug的实现,并给出了修正后的代码,强调在处理线程同步时可以利用AtomicInteger避免锁竞争。
摘要由CSDN通过智能技术生成

题目一:

            将t1,t2,t3,t4这四个线程分别向4个文件中写入数据,t1写入1,t2写入2,t3写入3,t4写入4,分别在A,B,C,D这4个文件中写入如下内容:

  • A:123412341234
  • B:234123412341
  • C:341234123412
  • D:412341234123
                    转自: http://blog.0hi.cn/java-classic-interview-question.html
  • 用JAVA语言实现以上功能同步并且实现让线程并行工作。以下实现代码转自网络,有bug

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.util.Arrays;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.atomic.AtomicInteger;
    import java.util.concurrent.locks.ReentrantLock;
     
     
    public class Main {
         
        static ExecutorService ex=Executors.newFixedThreadPool(4);
        static class MyFile{
         
            private File file;
            //用来表示当前文件的索引
            public AtomicInteger index;
            private ReentrantLock lock=new ReentrantLock();
            public MyFile(String filePath,int index){
         
                file=new File(filePath);
                this.index=new AtomicInteger(index);
            }
            //写入文件
            public void writeStr(String s) throws FileNotFoundException{
         
                FileOutputStream out=null;
                OutputStreamWriter</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值