多线程
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 · 64 阅读 · 0 评论 -
HashMap-HashTable-ConcurrentHashMap
HashMap-HashTable-ConcurrentHashMap HashMap: 是线程不安全的 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 · 194 阅读 · 0 评论 -
悲观锁Synchronized和乐观锁CAS
CAS与Synchronized CAS和Synchronized都可以保证多线程环境下共享数据的安全性。那么他们两者有什么区别? Synchronized是从悲观的角度出发: 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这 样别人想拿这个数据就会阻塞直到它拿到锁 (共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。因此 Synchronized我们也将其称之为悲观锁。jdk中的ReentrantLock也是一种悲观锁。 CAS是从乐观的原创 2021-04-19 19:59:10 · 325 阅读 · 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 · 75 阅读 · 0 评论