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

  • 相关阅读:
    OpenERP 7.0 中文报表PDF乱码(WindowsXP)
    【转】CentOS 6.3 X64自动安装OpenERP 7.0脚本
    OE7设置菜单为什么这么少?
    PostgreSQL的备份和恢复
    PyPI镜像网站
    【转】Win 7 下源码运行OpenERP7.0
    OpenERP中的会计凭证
    OpenERP实施记录(14):收款处理
    OpenERP实施记录(13):出库处理
    intro.js 页面引导简单用法
  • 原文地址:https://www.cnblogs.com/Master-Sun/p/14294495.html
Copyright © 2011-2022 走看看