zoukankan      html  css  js  c++  java
  • 梳理12--线程、线程的安全性、vector、HashTable

    一个进程包含多个线程

    一个线程只能跑在一个核上

    必须调用start方法,才能开辟一个新的线程

    1. 

                  

     2.

                                   

    3.

              

    4. 

                                  

     5. 

     

     6. 

    两种创建线程的方式 implements Runnable 和extends Thread

          

      ×

    7. 线程的安全性

    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author sr
     * @date 2021/1/18
     */
    public class ThreadTest {
        public static List<Integer> LIST = new ArrayList<>();
    
        public static void main(String[] args) {
            for (int i = 0; i < 5; i++) {
                Thread t =new Thread(new MyRun());
                t.start();
            }
            System.out.println("-------------list共有" + LIST.size() + "个数据.");
            
        }
    }
    ThreadTest
    /**
     * @author sr
     * @date 2021/1/18
     */
    public class MyRun implements Runnable{
        @Override
        public void run() {
    
            System.out.println("添加了一个数据");
            for (int i = 0; i < 100; i++) {
                ThreadTest.LIST.add(i);
            }
        }
    }
    MyRun

          

    但是也有 下标越界异常

    8. vector 也是List的一种

    public static List<Integer> LIST = new Vector<>();

    vector所有方法前面都有synchronized

     线程排队执行

    import java.util.List;
    import java.util.Vector;
    
    /**
     * @author sr
     * @date 2021/1/18
     */
    public class ThreadTest {
        public static List<Integer> LIST = new Vector<>();
    
        public static void main(String[] args) {
            for (int i = 0; i < 5; i++) {
                Thread t =new Thread(new MyRun());
                t.start();
            }
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("-------------list共有" + LIST.size() + "个数据.");
    
        }
    }
    ThreadTest
    /**
     * @author sr
     * @date 2021/1/18
     */
    public class MyRun implements Runnable{
        @Override
        public void run() {
            System.out.println("添加了一个数据");
            for (int i = 0; i < 100; i++) {
                ThreadTest.LIST.add(i);
            }
    
        }
    }
    MyRun

    9. HashTable是线程安全的,HashMap是线程不安全的

  • 相关阅读:
    160912、工具类:spring+springmvc自定义编码转换
    160909、Filter多方式拦截、禁用IE图片缓存、Filter设置字符编码
    160908、前端开发框架Semantic UI
    160907、CSS 预处理器-Less
    160906、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
    160905、c3p0详细配置
    160902、Ionic、Angularjs、Cordova搭建Android开发环境
    160901、在大型项目中组织CSS
    160831、过滤器和拦截器的区别
    (转)Uiautomator——API详解
  • 原文地址:https://www.cnblogs.com/Master-Sun/p/14294495.html
Copyright © 2011-2022 走看看