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
  • 相关阅读:
    Composite in Javascript
    Model Validation in Asp.net MVC
    HttpRuntime.Cache vs. HttpContext.Current.Cache
    Controller Extensibility in ASP.NET MVC
    The Decorator Pattern in Javascript
    The Flyweight Pattern in Javascript
    Model Binding in ASP.NET MVC
    Asp.net MVC
    jQuery Ajax 实例 全解析
    ASP.NET AJAX入门系列
  • 原文地址:https://www.cnblogs.com/chiweiming/p/11107750.html
Copyright © 2011-2022 走看看