java并发类有哪些,java并发性
如何解决写爬虫IP受阻的问题?立即使用。
并发与并行
并发:是指一定时间内任务的交替执行。当有多个线程在运行时,将CPU运行时间分成几个时间段,然后将时间段分配给每个线程执行。当线程代码运行一段时间后,其他线程处于挂起状态。
并行:指同时多任务的能力。当有多个线程运行时,cpu同时处理这些线程请求的能力。
因此,在并发环境中,程序的封闭性被打破,并出现以下特征:
1.并发程序是相互制约的。直接约束是一个程序需要另一个程序的计算结果;间接地,多个程序竞争共享资源,例如处理器、缓冲区等。
2.并发程序的执行过程是间歇的。程序需要记住字段指令和执行点。
3.当并发的数量设置合理,CPU有足够的处理能力时,并发会提高程序的运行效率。
在并发环境中,当一个对象可以被多个线程访问时,该对象可以被任何被访问的线程修改,从而导致不一致的数据。因此提出了线程安全的概念。
线程基本概念介绍
线程与进程
进程:每个进程都有自己的代码和数据空间(进程上下文),进程之间的切换会耗费很多。一个进程包含1-N个线程。(进程是资源分配的最小单位)。简单进程是在某种程度上相互隔离并独立运行的程序。
线程:同类线程共享代码和数据空间,每个线程都有自己的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)
线程和进程一样,分为五个阶段:创建、准备、运行、阻塞和终止。
1.Create:创建了一个新的thread对象,还没有调用start()方法。如Thread Thread=new Thread();
2.就绪:线程对象创建后,其他线程(比如主线程)调用对象的start()方法。这种状态下的线程位于可运行线程池中,等待被线程调度选中,获得cpu的使用权。
3.Running: runnable thread获取cpu时间片并执行程序代码。
4.阻塞:线程被阻塞。“阻塞状态”和“等待状态”的区别在于,“阻塞状态”是等待获取一个独占锁,当另一个线程放弃这个锁时就会发生这个事件;“等待状态”是等待一段时间,或者发生唤醒动作。当程序等待进入同步区域时,线程将进入这种状态。
(1).等待阻塞:正在运行的线程执行o.wait()方法,JVM会将线程放入等待队列。
(2)同步阻塞:当一个正在运行的线程获得一个对象的同步锁时,如果同步锁被其他线程占用,JVM会将该线程放入锁池。
(3).其他阻塞:当正在运行的线程执行Thread.sleep(long ms)或t.join()方法,或者发出I/O请求时,JVM会将线程置于阻塞状态。当sleep()状态超时,join()等待线程终止或超时,或者I/O处理完成时,线程再次进入runnable状态。
5.等待:进入这种状态的线程需要等待其他线程做出一些特定的动作(通知或者中断)。
6.阻塞:当一个线程试图获取一个内部对象锁(不是java.util.concurrent库中的锁),并且该锁被其他线程持有时,该线程进入阻塞状态。
7.等待:当一个线程等待另一个线程通知调度程序一个条件时,该线程进入等待状态。如调用:Object.wait()、Thread.join()和等待锁或条件。
8.TIMED_WAITING:这种状态不同于等待,它可以在指定时间后自行返回。
9.终止:表示线程已经完成执行。那是java。什么是并发?更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。