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

 

posted @ 2021-01-18 19:03  Master_Sun  阅读(121)  评论(0编辑  收藏  举报