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

  • 相关阅读:
    python学习-(__new__方法和单例模式)
    jQuery弹性展开收缩菜单插件gooey.js
    轻量级Modal模态框插件cta.js
    基于jq流畅度非常好的图片左右切换焦点图
    基于jQuery实现的腾讯互动娱乐网站特效
    基于jQuery和CSS3炫酷图片3D旋转幻灯片特效
    可嵌入图片视频jQuery全屏滑块
    基于jQuery仿迅雷影音官网幻灯片特效
    基于jQuery自适应宽度跟高度可自定义焦点图
    基于jQuery实现汉字转换成拼音代码
  • 原文地址:https://www.cnblogs.com/Master-Sun/p/14294495.html
Copyright © 2011-2022 走看看