![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA高并发
hanxh7
这个作者很懒,什么都没留下…
展开
-
java高并发系列-第六篇:线程的基本操作
新建线程新建线程很简单。只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可。 Thread thread1 = new Thread1(); t1.start(); 那么线程start()之后,会干什么呢?线程有个run()方法,start()会创建一个新的线程并让这个线程执行run()方法。这里需要注意,下面代码也能通过编译,也能...原创 2019-12-19 15:33:18 · 86 阅读 · 0 评论 -
java高并发系列-第五篇:深入理解进程和线程
进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。进程具有的特征: 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的 并发性:任何进程都可以同其他进行一起并发执行 独立性:进程是系统进行资源分配和调度...原创 2019-12-19 10:45:31 · 96 阅读 · 0 评论 -
java高并发系列-第四篇:JMM相关的一些概念
JMM(java内存模型),由于并发程序要比串行程序复杂很多,其中一个重要原因是并发程序中数据访问一致性和安全性将会受到严重挑战。如何保证一个线程可以看到正确的数据呢?这个问题看起来很白痴。对于串行程序来说,根本就是小菜一碟,如果你读取一个变量,这个变量的值是1,那么你读取到的一定是1,就是这么简单的问题在并行程序中居然变得复杂起来。事实上,如果不加控制地任由线程胡乱并行,即使原本是1的数值,你也...原创 2019-12-19 10:37:59 · 82 阅读 · 0 评论 -
java高并发系列-第三篇:有关并行的两个重要定律
有关为什么要使用并行程序的问题前面已经进行了简单的探讨。总的来说,最重要的应该是处于两个目的。第一,为了获得更好的性能;第二,由于业务模型的需要,确实需要多个执行实体。在这里,我将更加关注第一种情况,也就是有关性能的问题。将串行程序改造为并发程序,一般来说可以提高程序的整体性能,但是究竟能提高多少,甚至说究竟是否真的可以提高,还是一个需要研究的问题。目前,主要有两个定律对这个问题进行解...原创 2019-11-27 15:26:24 · 157 阅读 · 0 评论 -
java高并发系列-第二篇: 并发级别
由于临界区的存在,多线程之间的并发必须受到控制。根据控制并发的策略,我们可以把并发的级别分为阻塞、无饥饿、无障碍、无锁、无等待几种。阻塞一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行。当我们使用synchronized关键字或者重入锁时,我们得到的就是阻塞的线程。synchronize关键字和重入锁都试图在执行后续代码前,得到临界区的锁,如果得不到,线程就会被挂起等...原创 2019-11-27 15:16:26 · 129 阅读 · 0 评论 -
java高并发系列-第一篇:必须知道的几个概念
同步(Synchronous)和异步(Asynchronous)同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中“真实”地执行。整个过程,不会阻碍调用者的工作。如图:上图中显示了同步方法调用和异步方法调用...原创 2019-11-27 14:27:01 · 112 阅读 · 0 评论