摘要: 安全性: 数据竞争: 多个线程同时访问一个数据,并且至少有一个线程会写这个数据。 竞态条件: 程序的执行结果依赖程序执行的顺序。 也可以按照以下的方式理解竞态条件: 程序的执行依赖于某个状态变量,在判断满足条件的时候执行,但是在执行时其他变量同时修改了状态变量。 if (状态变量 满足 执行条件) 阅读全文
posted @ 2021-03-12 15:22 凝冰物语 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 产生死锁的四个必要条件: 1.互斥条件:一个资源同一时刻只能被一个线程所占有。 2.持有并等待条件:一个线程T1已经持有某资源X,然后申请获得新的资源Y,在等待过程中不释放已有资源X。 3.不可抢占条件:其它线程不能强行抢占线程T1的资源。 4.循环等待条件:线程T1持有资源X,等待线程T2持有的资 阅读全文
posted @ 2021-03-12 15:20 凝冰物语 阅读(1980) 评论(0) 推荐(0) 编辑
摘要: a happens-before b 翻译为a操作对b操作是可见的。可见即是指共享变量的更改能获知。 特性:传递性 原则:volatile定义的变量 写操作 happens-before 读操作 同一线程的代码顺序执行,先前的操作 happens-before 之后的操作 syncroized的解锁 阅读全文
posted @ 2021-03-12 15:16 凝冰物语 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 1.wait()方法 该方法继承于Object类。在调用obj.wait()方法后,当前线程会失去obj的锁。待其他线程调用obj.notify()或notifyAll()方法后进入锁等待池,争抢到锁后进行执行wait()后续代码。 wait(long time)方法超时自动结束阻塞,进入锁等待池, 阅读全文
posted @ 2021-03-12 15:07 凝冰物语 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 1.sleep()方法 jdk文档描述:Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to 阅读全文
posted @ 2021-03-12 14:58 凝冰物语 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 线程的创建方式 1.继承Thread类,重写run方法,示例如下: 1 class PrimeThread extends Thread { 2 long minPrime; 3 PrimeThread(long minPrime) { 4 this.minPrime = minPrime; 5 } 阅读全文
posted @ 2021-03-12 14:43 凝冰物语 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。 进程(process)是执行程序的一次执行过程,是一个动态的概念。进程是资源分配的最小单位。 一个进程中可以包含若干个线程(thread),一个进程中至少包含一个线程,不然没有存在的意义。 线程是CPU调度和执行的最小单位。 阅读全文
posted @ 2021-03-12 14:33 凝冰物语 阅读(54) 评论(0) 推荐(0) 编辑