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是线程不安全的

  • 相关阅读:
    JavaScript学习
    jenkins 的 ProcessTreeKiller----无法启动子进程的解决办法
    Zend studio 10.6 配置XDEBUG
    建立php开发环境(XAMPP + Xdebug+Zend Studio)
    [转]linux(centos)搭建SVN服务器
    【转】单身是最好的增值时期
    Hadoop核心组件
    数据节点中数据库的存储
    HDFS
    CSS:IE,Chrome,Firefox兼容性和CSS Hack(转载)
  • 原文地址:https://www.cnblogs.com/Master-Sun/p/14294495.html
Copyright © 2011-2022 走看看