zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Nginx详解十四:Nginx场景实践篇之代理服务
    PyCharm设置字体风格
    PyCharm+SVN
    Nginx详解十三:Nginx场景实践篇之防盗链
    Nginx详解十二:Nginx场景实践篇之跨站访问相关
    Nginx详解十一:Nginx场景实践篇之Nginx缓存
    Nginx详解十:Nginx场景实践篇之Nginx静态资源场景配置
    Nginx详解九:Nginx基础篇之Nginx的访问控制
    浅谈控件(组件)制作方法一(附带一delphi导出数据到Excel的组件实例)(原创)
    切断数据感知控件,大大提升软件运行速度
  • 原文地址:https://www.cnblogs.com/chiweiming/p/11107750.html
Copyright © 2011-2022 走看看