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

  • 相关阅读:
    bootstrap-table 切换页码保留勾选的checkbox
    vsftp服务器同步文件
    MySQL5.7 主从复制配置
    VMware NAT模式下设置网络
    在Jsp中调用静态资源,路径配置问题,jsp获取路径的一些方法
    centos7.3安装配置vsftp
    Linux安装配置Nginx
    jsp登录页面,展示错误信息,刷新页面后错误依然存在解决方案
    linux中使用Jmeter压测总结
    常规测试方法
  • 原文地址:https://www.cnblogs.com/Master-Sun/p/14294495.html
Copyright © 2011-2022 走看看