摘要: 最简单的线程池的实现 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolDemo { public static void main(S 阅读全文
posted @ 2020-05-06 16:35 gaoshengjun 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 思路是创建两个字符串a和b,再创建两个线程A和B,让每个线程都用synchronized锁住字符串(A先锁a,再去锁b;B先锁b,再锁a),如果A锁住a,B锁住b,A就没办法锁住b,B也没办法锁住a,这时就陷入了死锁。 public class DeadLock { public static St 阅读全文
posted @ 2020-05-06 16:12 gaoshengjun 阅读(166) 评论(0) 推荐(0) 编辑
摘要: Sleep 和 wait sleep不会释放锁,而wait会释放锁; 使用区域不用,sleep是哪都能用,wait只能在同步方法或者同步代码块中。 sleep是Thread调用的, 而wait和notify方法必须是“锁对象”调用的!! 生产者 和 消费者 //实体类 public class Ba 阅读全文
posted @ 2020-05-06 15:57 gaoshengjun 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 1.线程的安全问题发生的条件 只有当线程访问了共享的数据时,才会发生线程的安全问题!!! 2.线程的同步代码块,同步方法(静态方法,普通方法) 同步代码块的锁:"为任意的一个字符串都可以锁” 同步方法(普通):锁对象就是 this (静态方法):锁对象就是本类的字节码.class对象 public 阅读全文
posted @ 2020-05-06 12:19 gaoshengjun 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 数据结构 栈 和 队列 的结构 数组的结构 String[] str1 = {1,2,3}; String[] str2 = {1,2,3,4}; str1 = str2 查询快(有索引),增删慢(每次都需要从新创建一个新的数组 因为数组的特性是一旦创建是不可以改变大小的)。 链表的结构 特点:查询 阅读全文
posted @ 2020-05-06 10:15 gaoshengjun 阅读(217) 评论(0) 推荐(0) 编辑