Java并行编程
Rookie20190715
这个作者很懒,什么都没留下…
展开
-
JAVA并行编程-第三章 对象的共享-学习总结
第三章 对象的共享要编写正确的并发程序,关键问题在于:在访问共享的可变状态时需要进行正确的管理。本章学习重点就是如何共享和发布对象,从而使它们能够安全地由多个线程同时访问。关键字synchronized 不仅可以实现原子性或者确定临界区(Critical Section),还有内存可见性(Memory Visibility):当一个线程修改了对象状态后,其他线程可以看到发生的状态变化。可见性...原创 2019-08-13 16:43:00 · 208 阅读 · 0 评论 -
Java并发—java.util.concurrent.locks包
Java并发—java.util.concurrent.locks包一.synchronized的缺陷synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢?如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况:...转载 2019-08-28 16:19:26 · 291 阅读 · 0 评论 -
java 泛型详解
java 泛型详解1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用...转载 2019-08-28 11:42:47 · 288 阅读 · 0 评论 -
linux中fork()函数详解
linux中fork()函数详解一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数...转载 2019-08-27 17:19:02 · 203 阅读 · 0 评论 -
sleep()和wait()的区别及wait方法的一点注意事项
一.查看APIsleep是Thread类的方法,导致此线程暂停执行指定时间,给其他线程执行机会,但是依然保持着监控状态,过了指定时间会自动恢复,调用sleep方法不会释放锁对象。当调用sleep方法后,当前线程进入阻塞状态。目的是让出CPU给其他线程运行的机会。但是由于sleep方法不会释放锁对象,所以在一个同步代码块中调用这个方法后,线程虽然休眠了,但其他线程无法访问它的锁对象。这是因为sl...转载 2019-08-26 11:42:14 · 309 阅读 · 0 评论 -
多线程编程总结
多线程编程总结一、线程模型:线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体。根据运行环境和调度者的身份,线程可分为内核线程和用户线程。内核线程:运行在内核空间,由内核来调度;用户线程:运行在用户空间,由线程库来调用。当进程的一个内核线程获得CPU的使用权时,它就加载并运行一个用户线程。可见,内核程序相当于用户线程运行的容器。一个进程可以拥有M个内核线程和N个用户线程,其中...转载 2019-08-27 16:36:39 · 140 阅读 · 0 评论 -
java 线程池 使用实例
11 java 线程池 使用实例在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线...转载 2019-08-21 13:39:00 · 243 阅读 · 0 评论 -
JAVA并行编程-第二章 线程安全性-学习总结
第二章 线程安全性如果当多个线程访问同一个可变的状态变量是没有使用合适的同步,那么程序就会出现错误。有三种方法可以修复这个问题:不在线程之间共享该状态变量。将状态变量修改成不可变的变量。在访问状态变量时使用同步。对象的状态是指存储在状态变量中的数据。对象的状态可能包括其他依赖对象的域。无状态:它既不包括任何域,也不包括任何对其他类中域的引用。无状态对象一定是线程安全的。由于不恰当的...原创 2019-08-12 16:29:18 · 207 阅读 · 0 评论 -
JAVA并行编程-第一章 概述-学习总结
第一章 概述计算机操作系统使得计算机每次都能运行多个程序,并且不同程序都能在单独的进程中运行:操作系统为各个独立执行的进程分配各种资源,包括内存,文件句柄以及安全证书等。基于以下因素, 加入os:资源利用率。在等待一个程序的外部操作执行完成的过程中同时运行另一个程序,提高资源利用率。公平性。不同程序和用户能够共享计算机资源,而不是由一个程序从头运行到尾,再启动下一个程序。便利性。每个程序...原创 2019-08-12 11:42:24 · 283 阅读 · 0 评论 -
Java并行编程-第六章 任务执行-学习总结
第六章 任务执行(Task Execution)在线程中执行任务最简单策略就是在单个线程中串行地执行任务。主线程在接受连接与处理相关请求等操作之间不断交替运行。当服务器正在处理请求是时,新到来的连接必须等待直到请求处理完成,然后服务器将再次调用accept。显示的为任务创建线程通过为每个请求创建一个新的线程来提供服务,从而实现更高的响应性。对于每个连接,主循环都将创建一个新的线程来处理...原创 2019-08-15 15:52:00 · 199 阅读 · 0 评论 -
JAVA并行编程-第八章 线程池的使用-学习总结
第八章 线程池的使用1.在任务与执行策略之间的隐性耦合有些类型的任务需要明确地指定执行策略,包括:依赖性任务。大多数行为正确的任务都是独立的:它们不依赖于其他任务的执行时序、执行结果或其他效果。当在线程池中执行独立的任务时,可以随意地改变线程池的大小和配置,这些修改只会对执行性能产生影响。如果提交给线程池的任务需要依赖其他任务,那么就隐含了给执行策略带来了约束,此时必须小心维持这些执行策略以...原创 2019-08-20 09:36:07 · 192 阅读 · 0 评论 -
JAVA中线程同步的方法(7种)汇总
JAVA中线程同步的方法(7种)汇总同步的方法:一、同步方法即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。二、同步代码块即有synchronized关键...转载 2019-08-14 13:51:00 · 536 阅读 · 0 评论 -
线程安全这么回答才牛逼(转)
不是线程的安全面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。切记望文生义。同理,“线程安全”也不是指线程的安全,而是指内存的安全。为什么如此说呢?这和操作系统有关。目前主流操作系统都是多任务的,即多个进程同时运行。为了保证安全,每个进程只能访问分配给自己的内存空间,而不能访问...转载 2019-08-14 13:41:04 · 162 阅读 · 0 评论 -
Java 中的几种线程池
为什么要使用线程池虽然大家应该都已经很清楚了,但还是说一下。其实归根结底最主要的一个原因就是为了提高性能。线程池和数据库连接池是同样的道理,数据库连接池是为了减少连接建立和释放带来的性能开销。而线程池则是为了减少线程建立和销毁带来的性能消耗。以 web 项目为例,有以下两种情况:1、每次过来一个请求,都要在服务端创建一个新线程来处理请求,请求处理完成销毁线程;2、每次过来一个请求,服务端...转载 2019-09-01 16:33:21 · 164 阅读 · 0 评论