![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
Sandul
只做记录,不做解释
展开
-
线程池
线程池的使用无返回值的执行方法 @Test public void test01() throws Exception ExecutorService executorService = Executors.newFixedThreadPool(2); executorService.submit(new MyRunnable()); Thread.sleep(3000); } public class MyRunnable implements Runnable{ @Overr原创 2021-04-20 14:29:47 · 58 阅读 · 0 评论 -
HashMap-HashTable-ConcurrentHashMap
HashMap-HashTable-ConcurrentHashMapHashMap: 是线程不安全的HashTable:是线程安全的(但是性能低,竞争越激烈效率越低)ConcurrentHashMap:是线程安全的,并且是高效的HashTable效率低下原因:public synchronized V put(K key, V value) public synchronized V get(Object key)HashTable容器使用synchronized来保证线程安全,但在线程竞原创 2021-04-19 20:22:31 · 187 阅读 · 0 评论 -
悲观锁Synchronized和乐观锁CAS
CAS与SynchronizedCAS和Synchronized都可以保证多线程环境下共享数据的安全性。那么他们两者有什么区别?Synchronized是从悲观的角度出发:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。因此Synchronized我们也将其称之为悲观锁。jdk中的ReentrantLock也是一种悲观锁。CAS是从乐观的原创 2021-04-19 19:59:10 · 318 阅读 · 0 评论 -
多线程的创建方式
线程创建方式继承Thread://使用MyThread myThread = new MyThread("myThread"); myThread.start();//创建public class MyThread extends Thread{ public MyThread() { } public MyThread(String name) { super(name); } @Override public void run() { for (in原创 2021-04-19 17:23:52 · 70 阅读 · 0 评论