• Java多线程学习——知识点积累


    1. 开启多线程时,每一个线程都拥有自己的工作空间,每个工作空间都单独的和主存打交道。
    2. 并发的概念:个线程同时操作同一个对象
    3. 当产生并发时,如果从工作空间写入数据到内存的线程时间片用完了,其他线程再从主存读数据就会形成数据不统一。(只会在写数据时出现问题,简单的读数据是不会出现问题的)比如:教室里面只有一台电脑,大家都去使用,第一个同学使用后(时间片用完了)但是自己的任务还没完成,数据还没取出来,第二个同学也把自己的数据存在电脑C盘的同一个文件(和第一个同学一样)里面,这样就会导致数据不一致,当第一个同学再回来用,就会发现问题;
    4. 使用synchronized同步方法或者同步块时注意锁住的对象,看一下锁住的方法或者块属于哪个对象,相应的对象就被锁住了。
    5. ArrayList是线程不安全的,CopyOnWriteArrayList是线程安全的。
    6. 有关wait方法,wait方法和sleep最大的不同是wait方式释放当前对象的锁,并且wait要在同步块或者同步方法中使用,调用了该线程会处于等待状态,然后释放资源,其他拥有该对象的线程可以继续执行同步块或者同步方法(wait释放资源)。如下例子:
    public class Main{
        public static void main(String args[]) {
            Output output=new Output();
            new TestWait(output,"张三").start();
            new TestWait(output,"李四").start();
        }
    }
    
    class TestWait extends Thread{
        private Output output;
        public TestWait(Output output,String name){
            super(name);
            this.output=output;
        }
        @Override
        public void run() {
            output.output();
        }
    }
    
    class Output{
        public synchronized void output(){
            for (int i = 0; i < 10; i++) {
                if(Thread.currentThread().getName().equals("张三") && i==3){
                    try {
                        this.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println(Thread.currentThread().getName()+i);
                if(i==9){
                    this.notifyAll();
                }
            }
        }
    }
    张三0
    张三1
    张三2
    李四0
    李四1
    李四2
    李四3
    李四4
    李四5
    李四6
    李四7
    李四8
    李四9
    张三3
    张三4
    张三5
    张三6
    张三7
    张三8
    张三9
  • 相关阅读:
    codevs 3160 最长公共子串(SAM)
    noi2018d2t1
    后缀自动机
    [Scoi2014]方伯伯的玉米田
    【NOI2017】泳池
    【BZOJ2560】串珠子
    POJ 1737 统计有n个顶点的连通图有多少个 (带标号)
    【BZOJ3590】[Snoi2013]Quare 状压DP
    【BZOJ1095】【ZJOI2007】捉迷藏 [动态点分治]
    BZOJ1316: 树上的询问
  • 原文地址:https://www.cnblogs.com/chiweiming/p/11107750.html
Copyright © 2020-2023  润新知