
线程与进程
不断前行的菜鸟_
西安电子科技大学 硕士
展开
-
[重识多线程] 01- java多线程创建
一、什么是线程进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。操作系统在分配资源时是把资源分配给进程的,但是CPU资源比较特殊,它是被分配到线程的,因为真正要占用CPU运行的是线程,所以也说线程是CPU分配的基本单位。以Java 为例,我们启动一个main函数时,实际上就是启动了一个JVM 的进程,main函数所在的线程就是这个进程的一个线程,也称为主线程。一个JVM进程中有多个线程,多个线原创 2020-06-14 20:21:42 · 337 阅读 · 0 评论 -
Java并发编程:内置锁 Synchronized
在多线程编程中,线程安全问题是一个最为关键的问题,其核心概念就在于正确性,即当多个线程访问某一共享、可变数据时,始终都不会导致数据破坏以及其他不该出现的结果。而所有的并发模式在解决这个问题时,采用的方案都是序列化访问临界资源 。在 Java 中,提供了两种方式来实现同步互斥访问:synchronized 和 Lock。本文针对 synchronized 内置锁 详细讨论了其在 Java 并...原创 2018-05-31 22:16:57 · 309 阅读 · 0 评论 -
Java并发编程:Lock
在面中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchronized的缺陷讲起,然后再讲述...转载 2018-05-31 17:56:28 · 174 阅读 · 0 评论 -
Java并发编程: ThreadFactory接口用法
线程工厂(ThreadFactory接口)在创建线程的时候,我们当然也能使用工厂模式来生产线程,ThreadFactory是用来实现创建线程的工厂接口,其实它只有一个方法Thread newThread(Runnable r),所以这个接口没多大用,可以自己编写新接口。使用ThreadFactory工厂能替代默认的new Thread,而且在自定义工厂里面,我们能创建自定义化的Thread,并且计...转载 2018-05-31 10:01:42 · 2115 阅读 · 0 评论 -
java并发编程:Executor、Executors、ExecutorService
Executors 在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好...原创 2018-05-30 22:34:17 · 83269 阅读 · 18 评论 -
java并发编程:之守护线程(Daemon)
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比喻,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾...转载 2018-05-30 11:13:23 · 4487 阅读 · 0 评论 -
线程同步与死锁(3)
线程同步与死锁线程同步与死锁1、多线程共享数据2、线程同步3、实现线程同步的方法3.1、同步代码块3.2、同步方法3.3、Lock4、死锁1、多线程共享数据在多线程操作中,多个线程有可能同时处理同一个资源,这就是多线程中的共享数据2、线程同步解决数据共享问题必须使用同步,所谓的同步就是指多个线程在同一个时间段内只能有一个线程执行指定的代...原创 2018-05-29 16:37:43 · 714 阅读 · 0 评论 -
Java 并发编程:深入理解 ThreadLocal
摘要: ThreadLocal 又名线程局部变量,是 Java 中一种较为特殊的线程绑定机制,用于保证变量在不同线程间的隔离性,以方便每个线程处理自己的状态。进一步地,本文以ThreadLocal类的源码为切入点,深入分析了ThreadLocal类的作用原理,并给出应用场景和一般使用步骤。...原创 2018-06-05 10:48:08 · 246 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
摘要: 在 Java 并发编程中,要想使并发程序能够正确地执行,必须要保证三条原则,即:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能会导致程序运行不正确。volatile关键字 被用来保证可见性,即保证共享变量的内存可见性以解决缓存一致性问题。一旦一个共享变量被 volatile关键字 修饰,那么就具备了两层语义:内存可见性和禁止进行指令重排序。在多线程环境下,volatile关键...转载 2018-06-04 22:29:52 · 317 阅读 · 0 评论 -
java并发编程:wait和sleep的区别
1:wait()可以指定时间也可以不指定时间,sleep必须指定时间2:在同步中时,对CPU的执行权和锁的处理不同:wait()释放CPU的执行权,释放锁;sleep()释放CPU的执行权,但是不释放锁...原创 2018-06-04 16:01:27 · 211 阅读 · 0 评论 -
java并发编程:线程间通信
摘要:线程与线程之间不是相互独立的个体,它们彼此之间需要相互通信和协作,最典型的例子就是生产者-消费者问题。本文首先介绍 wait/notify 机制,并对实现该机制的两种方式——synchronized+wait-notify模式和Lock+Condition模式进行详细剖析,以作为线程间通信与协作的基础。进一步地,以经典的生产者-消费者问题为背景,熟练对 wait/notify 机制的使用。最...原创 2018-06-04 15:22:05 · 397 阅读 · 0 评论 -
线程_join yield 与interrupt线程
join与中断线程(2)join与中断线程(2)1、join2、中断3、自定义标记中断线程1、joinjoin()方法:加入线程让调用的线程先执行指定时间或者是指向完毕异常:InterruptedException-如果任何线程中断当前线程。当抛出异常时,当前线程的中断状态被清除package com.huanghe;/** * @Aut...原创 2018-05-28 11:40:50 · 736 阅读 · 0 评论 -
java并发编程:线程与进程
进程与线程_基础(1)进程与线程_基础(1)1、什么是进程2、进程的状态3、CPU的时间片4、线程基本概念5、并行与并发6、线程的基本使用6.1、一种是继续Thread类,6.2另外一种是实现Runable接口6.3、Thread和Runnable的区别6.3实现Callable接口,并与Future、线程池结合使用7、线程的休眠什么是释放CPU的时间片?...原创 2018-05-28 10:24:21 · 364 阅读 · 0 评论