
线程
林浩-豪享码
这个作者很懒,什么都没留下…
展开
-
线程------简单的死锁设计
public class Lock { static Lock lock1=new Lock(); static Lock lock2=new Lock();}public class DeadLock extends Thread{ int flag; @Override public void run() { if(flag==0){ synchronized(L...原创 2020-03-07 10:34:48 · 153 阅读 · 0 评论 -
线程------让出线程和守护线程
让出线程public class ThreadTest extends Thread{ private String name; public ThreadTest(String name){ this.name=name; } @Override public void run(){ for(int i=0;i<=100;i++){ System.out.pri...原创 2020-03-07 10:09:46 · 211 阅读 · 0 评论 -
线程------加入线程join()
public class ThreadTest extends Thread{ private String name; public ThreadTest(String name){ this.name=name; } @Override public void run(){ for(int i=0;i<=100;i++){ System.out.println(...原创 2020-03-06 19:41:21 · 123 阅读 · 0 评论 -
线程-----线程优先级设置
通过public final void setPriority(int newPriority)来设置线程的优先级,但是优先级并不是绝对的,只是相对来说比其它线程得到CPU的资源机会多一些public class ThreadTest extends Thread{ private String name; public ThreadTest(String name){ this.n...原创 2020-03-06 19:17:06 · 644 阅读 · 0 评论 -
线程----线程间通信(生产者消费者模式)
案例:生产者生产水果,如果水果没有被买走那么就不生产处于等待状态,如果水果被消费者买走,消费者就会通知生产者再生产水果,生产者生产完水果就通知消费者来买水果注意:1.线程间的通信,共享的数据一定要有同步代码块synchronized2.一定要有wait和notify,而且二者一定是成对出现3.生产者和消费者的线程实现一定是在while(true)里面public class Basket...原创 2020-02-19 23:00:58 · 146 阅读 · 0 评论 -
线程-----同步锁方法及变量被static修饰原则
例子:火车站有100张票,4个窗口同时卖票以下分别使用继承Thread类及实现Runnable接口做这个案例,进行对比实现Runnable接口:public class SaleTicket implements Runnable { private int tickets=100; @Override public void run() { ...原创 2020-02-20 20:52:20 · 614 阅读 · 0 评论 -
线程------线程死锁原因、发现线程死锁方法、如何避免线程死锁
死锁:指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力的作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的线程称为死锁线程死锁原因:两个及两个以上的线程,抢占2把及两把以上的锁,抢占锁的顺序不一致发现线程死锁的方法:public class DeadLockSample { private fin...原创 2020-02-18 08:22:15 · 248 阅读 · 0 评论 -
线程----线程状态,不同状态切换
线程6种状态状态之间切换Thread.yield(): 线程让步,使用了这个方法,当前线程就会退出CPU资源,让其他线程或当前线程使用CPU资源注意:当前线程退出CPU后,当前线程和其他线程争取CPU资源概率是一样的,也就是说当前线程退出CPU后有可能又立即抢到CPU资源的结果:线程A执行到10,让出CPU后有可能又立即抢到CPU资源,继续A线程11Thread.sleep(...原创 2020-02-15 17:34:51 · 355 阅读 · 0 评论 -
线程------并发并行
单线程程序:程序执行过程中始终只有一个线程在运行,后面的代码段必须等到前面的代码段的任务执行完毕后才能执行,这样的程序可以认为是单线程程序count2只能等count执行完后才能执行,因为这个程序只有一个线程(主线程)多线程程序:程序由多个线程构成,方法内各代码块执行顺序是不确定的,这样的程序可以认为是多线程程序count和count2先后顺序取决于线程的调度情况并发和并行是针对...原创 2020-02-15 16:11:19 · 192 阅读 · 0 评论 -
线程-----同步异步,阻塞非阻塞
同步:阻塞式调用,调用方必须等待响应方执行完毕才会返回例如:A接口调用B接口,B接口有内部的逻辑实现,再将B接口执行接口返回给A接口1.大多数非异步场景(不用异步,就用同步来调用)如:百度搜索,客户端同步调用服务端搜索接口,等待服务端实时结果2.在编排的流程中,必须等待拿到响应结果才能做下一步操作,且在实时链路中相互之间有串联或关联数据的如:电商中商品详情页的查询接口的内部实现异步:...原创 2020-02-14 10:27:41 · 271 阅读 · 0 评论 -
线程----线程安全分类
线程安全:一个类被多个线程以任意方式同时调用,且不需要外部额外同步和协同的情况下,仍然保持内部数据正确且表现正确行为,那么这个类就是线程安全1. 不可变类:不可变的对象一定是线程安全的例如:1.final修饰的不可变类,如:String,Integer等2.enum枚举类(可通过编译反编译看到enum是一个final类,内部通过创建多个final实例来保证不被修改,做到线程安全的)f...原创 2020-02-11 10:32:40 · 337 阅读 · 0 评论 -
线程-----线程池参数、线程池状态
线程池参数1.corePoolSize:核心线程数,保持在线程池中线程的数量2.maximumPoolSize:线程池允许的最大线程数3.keepAliveTime/timeUnit:线程池中线程空闲不被释放的最大时间,配合timeUnit使用,为0表示永远不被释放4.workQueue:BlockingQueue, 工作线程任务的阻塞队列,用来存放等待执行的任务,默认实现:Linked...原创 2020-02-07 10:53:37 · 223 阅读 · 0 评论 -
线程----ThreadLocal数据机构、实现原理、误用引起的OOM问题
先了解下四种引用原创 2020-02-06 12:12:04 · 197 阅读 · 0 评论 -
线程----ThreadLocal定义和用途
ThreadLocal定义:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是Thread的局部变量。先来看一下没有ThreadLocal的话,程序该怎么写模拟场景:HTTP服务端使用多线程处理来自不同用户的请求...原创 2020-02-05 12:56:11 · 267 阅读 · 0 评论 -
线程----线程创建的四种方式、执行过程、Future获取线程结果的过程
方式一:通过Runnable接口创建线程1.重写Runnable的run方法;2.使用runnable对象构造Thread对象3.启动线程public class RunnableOverride { public static void main(String[] args) { Runnable runnable= new Runnable(){ @Overr...原创 2020-02-03 12:23:29 · 554 阅读 · 0 评论 -
线程----synchronized、volatile、ReentrantLock关键字
synchronized是Java关键字,用来给方法或代码块加锁,控制方法或代码块同一时间只有一个线程执行,用来解决多个线程同时访问时出现的并发问题。售票例子:public class SynchronizedTest { private static int totalTickets = 1000; private static final Object LOCK = new Objec...原创 2020-02-02 21:31:19 · 201 阅读 · 0 评论 -
线程---操作系统内存模型、java内存模型、线程可见性问题、 指令重排序、Happens-before规则
操作系统内存模型L1、L2是每个CPU自己的高速缓存L3是CPU之间共享的缓存L1和L2的缓存命中率均约为80%达到L3缓存数据占比4%左右Java内存模型每个线程有自己的工作内存工作内存包含线程本地局部变量和主内存的副本拷贝线程之间的共享变量通过主内存在各线程间同步...原创 2020-02-01 13:18:53 · 284 阅读 · 0 评论