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

浙公网安备 33010602011771号