JAVA多线程学习3--线程一些方法】的更多相关文章

随着开发项目中业务功能的增加,必然某些功能会涉及到线程以及并发编程的知识点.笔者就在现在的公司接触到了很多软硬件结合和socket通讯的项目了,很多的功能运用到了串口通讯编程,串口通讯编程的安卓端就是基于线程的方式和硬件保持通讯的. 关于Java线程,先了解一下Java线程的生命周期和物种基本状态,先上一张经典的图 上图也比较直观的绘制了关于Java线程的生命周期同时也囊括了Java线程的重点知识点. Java线程的五种状态: 新建状态(New): 当线程对象创建后,线程即进入新建状态,如:Th…
线程生命周期 摘要: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead)5种状态.尤其是当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行.阻塞之间切换 1. 新建状态,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,…
为什么用线程池 1.创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了! 正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销 2.线程并发数量过多,抢占系统资源从而导致阻塞 我们知道线程能共享系统资源,如果同时执行的线程过多,就有可能导致系统资源不足而产生阻塞的情况 运用线程池能有效的控…
一.通过sleep方法睡眠 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行).该线程不丢失任何监视器的所属权. 二.线程优先级 线程具有优先级,范围为1-10. MAX_PRIORITY线程可以具有的最高优先级.int类型,值为10. MIN_PRIORITY线程可以具有的最低优先级.int类型,值为1. NORM_PRIORITY分配给线程的默认优先级.int类型,值为5. 可以通过setPriority()设置线程的优先级. 三.yield方法让出cpu yield方法线程高风亮节让出C…
在Java开发中,多线程是很常用的,用得好的话,可以提高程序的性能. 首先先来看一下线程和进程的区别: 1,一个应用程序就是一个进程,一个进程中有一个或多个线程.一个进程至少要有一个主线程.线程可以看做是轻量级的进程.(lightweight process) 2,多个线程可以共享进程的资源.进程之间是独立的,一个进程不能共享其它进程的资源. 3,因为系统创建进程需要为其分配空间,所以创建进程的代价高,创建线程的代价则要小得多. 创建线程的方式: Java中创建多线程有3中方式: 1,继承Thr…
线程创建方式 摘要: 1. 通过继承Thread类来创建并启动多线程的方式 2. 通过实现Runnable接口来创建并启动线程的方式 3. 通过实现Callable接口来创建并启动线程的方式 4. 总结Java中创建线程的方式,比较各自优势和区别 一.继承Thread类创建线程类 1.1 继承Thread类创建线程步骤 Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码.Java使用…
前面我们讲到了synchronized:那么这节就来将lock的功效. 一.locks相关类 锁相关的类都在包java.util.concurrent.locks下,有以下类和接口: |---AbstractOwnableSynchronizer |---AbstractQueuedLongSynchronizer |---AbstractQueuedSynchronizer |---Condition |---Lock |---LockSupport |---ReadWriteLock |--…
0.使用线程池的必要性 在生产环境中,如果为每个任务分配一个线程,会造成许多问题: 线程生命周期的开销非常高.线程的创建和销毁都要付出代价.比如,线程的创建需要时间,延迟处理请求.如果请求的到达率非常高并且请求的处理过程都是轻量级的,那么为每个请求创建线程会消耗大量计算机资源. 资源消耗. 活跃的线程会消耗系统资源,尤其是内存.如果可运行的线程数量多于处理器数量,那么有些线程会闲置.闲置的线程会占用内存,给垃圾回收器带来压力,大量线程在竞争CPU时,还会产生其他的性能开销. 稳定性. 如果线程数…
任务和线程的启动很容易.在大多数情况下我们都会让他们运行直到结束,或是让他们自行停止.但是,有时我们希望提前结束任务或是线程,可能是因为用户请求取消,或是线程在规定时间内没有结束,或是出现了一些问题迫使线程要提前结束. 强制一个线程或是服务立即停止,可能会造成共享数据状态不一致的问题,比如,两个线程正对一个共享数据进行操作,然后被突然杀死,这样会对数据造成不确定性的影响.Java中没有提供任何机制来安全的终止线程,但它提供了中断,这种协作机制,“提醒”线程可以自己结束自己线程.这种机制提供了更好…
线程同步是为了让多个线程在共享数据时,保持数据的一致性.举个例子,有两个人同时取钱,假设用户账户余额是1000,第一个用户取钱800,在第一个用户取钱的同时,第二个用户取钱600.银行规定,用户不允许透支,当余额不足时,应该取钱失败.我们先来看一下,如果线程不同步,会出现什么情况.代码如下: public class SynchronizeApp { /** * @param args */ public static void main(String[] args) { // 获得账户 Acc…