多线程
文章平均质量分 53
西红柿番茄炒蛋
这个作者很懒,什么都没留下…
展开
-
ReentrantReadWriteLock
在读写/写写的情况下需要用读写锁来保证线程安全 ReentrantReadWriteLock Lock接口的实现类之一 普通锁:需要实现类ReentrantLock; Lock lock=new ReentrantLock(); 读写锁: 需要实现类ReentrantReadWriteLock ReentrantReadWriteLock lock=new ReentrantReadWriteLock(); 锁的是访问器的设置值于得到值;相当于读和写 package ReentrantReadWrite原创 2021-01-11 01:40:09 · 85 阅读 · 0 评论 -
高并发下线程安全集合选择
线程不安全 会出现丢值或者重复的情况 Collection集合下的线程安全 重要:支持复合操作的线程安全的 1.CopyOnWriteArrayList(); 2.CopyOnWriteHashMap 别的线程安全的,都是不支持复合操作的 StringBuffer 1.List集合 CopyOnWriteArrayList(); 线程安全; 支持复合操作及在迭代器中一遍编列 一边添加元素 原理:写入并复制,每次要创造新的并添加进去刚加的;内部lock锁加持使线程安全;自己复制自己的;添加自己的;原创 2021-01-11 01:30:10 · 420 阅读 · 2 评论 -
线程池
方便线程的创建;好的话使线程充分被利用 节省空间 使用线程时,需要频繁的创建和销毁线程。new Thread(Runnable a,String str); 是自己创建的线程 或者在线程类中直接继承线程类Thread; 线程池是创造好的几个线程在队列中排列; 用完还要放到队列的底部去重复利用 Executor接口 java.util.concurrent并发包下的一个接口 public interface Executor Executors类 并发包下的一个类 public class Execut原创 2021-01-07 20:13:52 · 69 阅读 · 0 评论 -
线程八锁
package 线程八锁; /* * 线程八锁 * bazhong情况 还时一个类 * 1. 两个线程调用同步普通方法 是一个锁 * 2.两个线程调用同步的方法,one休眠3秒 等待3秒后,OneTwo一起发出 是同一把锁 * 3. 三个方法 两个同步方法是同一把锁 一个普通方法没有锁 One Two是同一把锁 Three是不加锁 同时运行 Three One Two 是顺序 三个方法 有两个同步方法 两个同步方法是一把锁 另一个没有锁 * 4. 创建两个普通的方法原创 2021-01-07 19:56:55 · 69 阅读 · 0 评论 -
闭锁
CountDownLatch 是并发包下的一个普通类 public class CountDownLatch extends Object 构造方法: CountDownLatch( int count); //构造一个给定计数器 count必须和线程的个数一样;用于倒计时 当所有的子线程结束时,便启动主线程的运行 方法 await();// 阻塞主线程 当子线程全部完成后自动解开阻塞 除非interrupted countDown();//减少封锁器的个数 每次减一 getCount();// 返原创 2021-01-07 19:48:46 · 105 阅读 · 0 评论 -
并发包下的Callable接口
有返回值类型的线程 需要借助FutureTask类,这也是并发包 java.lang.Object下的一个普通类;这是Callable的一个辅助类 用于连接实现Callable线程和Thread线程类的工具 返回值类型也是借助FutureTask的get方法来得到返回值类型的;必须抛出异常且用一个变量来接它才能用System.out.println()的方式输出 注意::: 必须在所有线程启动后才能获取返回值;这个返回值是这个线程执行的次数或者这个线程需要返回的类型 注意Callable原创 2021-01-07 19:32:42 · 119 阅读 · 0 评论 -
并发包下的通讯机制
通讯机制加锁的原理 加这个锁一定是同步锁;一再使两个线程同时去运行,但是只能运行线程的一个。 锁就是同步锁;使这两个线程必须同时先后完成 谁抢到锁就完成 不好概况;大概意思就是 锁是一把锁,在同步锁下的线程是同时唤醒的,但是通讯机制里有休眠和唤醒另一个线程的能力 是因为 Object类下的 wait() notify() notifyAll() 不能和luck锁连用;要解决异常 必须改为 并发包下的 通讯机制 并发包下使用Luck下的condition接口下的 await() signal(原创 2021-01-11 01:31:41 · 172 阅读 · 0 评论 -
多线程的四种情况
多个线程抢占一个资源 1.俩人抢5个苹果 只能用实现 Runnable接口的方式去实现多线程;用Thread类继承不管用; 避免将循环写道同步锁内;否则会造成死锁的情况 苹果类实现多线程实现Runnable()类;同步锁锁的是资源或者控制资源的方法 --------伪代码 public class Apple implements Runnable{ int count 5; @override public void run(){ while(count>0){ if(coun原创 2021-01-11 01:30:47 · 149 阅读 · 0 评论 -
高并发
synchronized 同步锁 描述:又称线程同步;及多个线程共享一个 资源。出现资源竞争的问题。如我们生活中的火车抢票 秒杀商品等 同步方法 封装一个普通方法在run()外,并带入到run()中。 语法: public synchronized void 方法名(){ System.out.println(Thread.currentThread().getName()+""); } 1.抢火车票 多个站台同时发售火车票,怎么能不卖重 package 线程同步; public class MaiP原创 2021-01-04 19:12:38 · 128 阅读 · 1 评论 -
多线程基本概念
进程 正在运行的程序叫进程 线程 1.运行在进程中 是正在运行的正在进程中的子程序流 2. 每一个线程都栈用进程的内存;若进程终止;线程就不存在了 3. 每个线程都是独立的,互不干扰 每一个方法就是一个线程;java执行程序就是调用线程的过程 main函数是主线程 我们一致在调用主线程 4 . 线程于线程之间互不干扰 他们共用一个进程的内存 多线程 概念:多个线程并发执行, 高并发(多个用户同时访问) 多个正在执行的子程序流 多个线程共用同一个资源, 火车票抢票 涉及高并发 多个线程有原创 2021-01-04 18:53:32 · 185 阅读 · 0 评论 -
两种实现多线程的方式 迅雷案列
Thread多线程类 继承Thread类使子类有多线程的能力 1.子类需要重写run()方法 重要,run()里面是子线程的重要实现过程 东西的案列 package 第一种; public class Thunder extends Thread{ @Override public void run() {//继承Thread需要重写run()方法 // TODO Auto-generated method stub for(int i=1;i<101;i++) { Sy原创 2021-01-04 18:43:07 · 330 阅读 · 4 评论