随笔分类 -  多线程

摘要:1.修饰实例方法 作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁 2.修饰静态方法 也就是给当前类加锁,会作用于类的所有对象实例,因为静态成员不属于任何一个实例对象,是类成员( static 表明这是该类的一个静态资源,不管new了多少个对象,只有一份)。所以如果一个线程 A 调用一个 阅读全文
posted @ 2020-09-21 15:49 ToBeContinue得 阅读(284) 评论(0) 推荐(0)
摘要:1.两者最主要的区别在于:sleep 方法没有释放锁,而 wait 方法释放了锁; 2.两者都可以暂停线程的执行; 3.Wait 通常被用于线程间交互/通信,sleep 通常被用于暂停执行; 4.wait() 方法被调用后,线程不会自动苏醒,需要别的线程调用同一个对象上的 notify() 或者 n 阅读全文
posted @ 2020-09-14 10:35 ToBeContinue得 阅读(199) 评论(0) 推荐(0)
摘要:1.产生死锁必须具备以下四个条件 互斥条件:该资源任意一个时刻只由一个线程占用; 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放; 不剥夺条件:线程已获得的资源在末使用完之前不能被其他线程强行剥夺,只有自己使用完毕后才释放资源; 循环等待条件:若干进程之间形成一种头尾相接的循环等 阅读全文
posted @ 2020-09-14 10:33 ToBeContinue得 阅读(105) 评论(0) 推荐(0)
摘要:1.初始状态 线程被构建,还没有调用start()方法 2.运行状态 3.阻塞状态 4.等待状态 5.超时等待 6.终止状态 阅读全文
posted @ 2020-09-14 10:06 ToBeContinue得 阅读(128) 评论(0) 推荐(0)
摘要:1.只能保证一个共享变量的原子操作,如果是多个共享变量,使用syn; 2.引出ABA问题; 阅读全文
posted @ 2020-06-06 11:01 ToBeContinue得 阅读(264) 评论(0) 推荐(0)
摘要:1.程序相当于一堆数据,像qq这些程序; 2.进程是程序运行时占用一定的cpu、内存,像qq运行起来,它收拾操作系统动态执行的基本单元; 3.一个进程可以包含多个线程,像qq里打开多个对话框聊天,能更高效的提高多个程序间并发执行的程度; 阅读全文
posted @ 2020-03-27 17:30 ToBeContinue得 阅读(205) 评论(0) 推荐(0)
摘要:1.wait(),notify() 2.Lock.condition 阅读全文
posted @ 2020-03-27 17:26 ToBeContinue得 阅读(79) 评论(0) 推荐(0)
摘要:1.Sync(方法、代码块) Sync是自动锁 2.Lock unLock Lock 是手动锁 阅读全文
posted @ 2020-03-27 17:22 ToBeContinue得 阅读(99) 评论(0) 推荐(0)
摘要:1.实现Thread 2.实现Runnable 3.实现线程池 4.实现Callable 5.Runnable和callable的区别: Runnable属于Java.lang包,callable属于Callable.util.concurrent包,Runnable 实现run方法,没有返回值,c 阅读全文
posted @ 2020-03-27 17:14 ToBeContinue得 阅读(126) 评论(0) 推荐(0)
摘要:1.基础知识; ThreadLocal是线程局部变量,它和普通变量的区别在于,每个线程持有这个变量的一个副本,可以独立修改(set方法)和访问(get方法)这个变量,并且线程之间不会发生冲突。 在类中定义ThreadLocal实例时,一般会被private static修饰,这样可以让ThreadL 阅读全文
posted @ 2019-10-08 13:55 ToBeContinue得 阅读(110) 评论(0) 推荐(0)