![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程 (multithreading)
文章平均质量分 67
beiyetengqing
http://blog.csdn.net/beiyeqingteng 的镜像站
展开
-
java多线程之死锁
1. Java中导致死锁的原因Java中死锁最简单的情况是,一个线程T1持有锁L1并且申请获得锁L2,而另一个线程T2持有锁L2并且申请获得锁L1,因为默认的锁申请操作都是阻塞的,所以线程T1和T2永远被阻塞了。导致了死锁。这是最容易理解也是最简单的死锁的形式。但是实际环境中的死锁往往比这个复杂的多。可能会有多个线程形成了一个死锁的环路,比如:线程T1持有锁L1并且申请获得锁L2,而线程T转载 2015-11-05 02:35:30 · 628 阅读 · 0 评论 -
java多线程之happens-before
1、背景问题在讲happens-before之前,先引入一个例子:假定我们有已经被初始化的变量:int counter = 0;这个 counter 变量被两个线程所共有,也就是说线程A和线程B都可以获取或者更改counter的值。 这里我们假设线程A要增加counter的值:counter++;然后,线程B打印counter的值System.out.println(c原创 2015-11-03 11:24:19 · 2295 阅读 · 0 评论 -
JAVA多线程之常用方法
在多线程编程中,经常会使用到如下方法:1. public final void wait() throws InterruptedException,IllegalMonitorStateException该方法用来将当前线程置入休眠状态,直到接到通知或被中断为止。在调用wait()之前,线程必须要获得该对象的对象级别锁,即只能在同步方法或同步块中调用wait()方法。进入wait(原创 2015-11-04 03:44:06 · 1024 阅读 · 1 评论 -
线程的创建
什么是进程和线程?A process is an executing instance of an application. For example, when you double-click the Microsoft Word icon, you start a process that runs Word.A thread is a basic unit to which th转载 2015-11-01 11:25:32 · 506 阅读 · 0 评论 -
java中如何中断thread
要中断thread的执行,我们有多种方式,有些方式是推荐的,有些方式是不推荐的,甚至是错误的。1. 可否用interrupt()方法来中断thread?为了回答这个问题,我们首先来看一个例子:class MyThread implements Runnable { public void run() { while (true) { System.out.prin原创 2015-11-01 07:17:33 · 2501 阅读 · 0 评论 -
多线程之指令重排序
1、首先为何要指令重排序(instruction reordering)?编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。也就是说,对于下面两条语句:int a = 10;int b = 20;在计算机执行上面两句话的时候,有可能第二条语句会先于第一条语句执行。所以,千万不要随意假设指令执行的顺序。2、是不是所有的语句的执行顺转载 2015-11-02 08:00:05 · 13473 阅读 · 3 评论 -
生产者消费者问题源程序
问题描述:生产者消费者问题(Producer-consumer problem)是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中原创 2015-11-01 04:18:18 · 2061 阅读 · 0 评论 -
Java多线程之内存可见性
1、什么是JAVA 内存模型Java Memory Model (JAVA 内存模型)描述线程之间如何通过内存(memory)来进行交互。 具体说来, JVM中存在一个主存区(Main Memory或Java Heap Memory),对于所有线程进行共享,而每个线程又有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作并非发生在主存区原创 2015-11-03 02:47:55 · 14168 阅读 · 12 评论 -
How Volatile in Java works? Example of volatile keyword in Java
How to use Volatile keyword in JavaWhat is volatile variable in Java and when to use Volatile variable in Java is famous multi-threading interview question in Java interviews. Though many programm转载 2015-11-03 11:50:55 · 1248 阅读 · 0 评论