线程状态 新建 (new Thread) 创建一个空对象的线程,在这时可以通过Thread类的方法来设置线程各种属性 ,如线程的 优先级(setPrioity),线程名(setName),和线程的类型(setDaemon)等 线程的类型 -->守护线程和后台线程 后台线程随守护线程结束而结束,垃圾回 ...
分类:
编程语言 时间:
2018-11-22 23:52:13
阅读次数:
249
java多线程 关于内存 每个线程会有自己的线程栈,即,变量不能共享,只能传值拷贝 每个线程new出的对象全都保存在堆中,全部共享 线程的生命周期 线程具有5种状态,即新建,就绪,运行,阻塞,死亡。 新建,当new出来一个线程以后,jvm为其分配内存空间,并初始化成员变量的值 就绪,当线程调用了st ...
分类:
编程语言 时间:
2018-11-19 23:59:30
阅读次数:
341
概述 NSThread类是一个继承NSObjct类的个轻量级的类。但需要管理线程的生命周期、同步、加锁等问题,这会导致一定的性能开销。 使用NSThread类可以让某个OC方法在特定的线程中被调用。当需要执行一个冗长的任务,并且不想让这个任务阻塞应用中的其他部分,尤其为了避免不阻塞app的主线程(因 ...
分类:
其他好文 时间:
2018-11-15 18:25:48
阅读次数:
202
①什么是GCD 全称是Grand Central Dispatch,可译为“牛逼的中央调度器”,纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU内核(比如双核、四核) GCD会自动管理线程的生命周期(创建线程、调度任务、销毁 ...
分类:
编程语言 时间:
2018-11-14 22:34:37
阅读次数:
247
private ThreadPoolExecutor threadPoolExecutor; /** * 获取线程池 * @return */ private ThreadPoolExecutor getThreadPoolExecutor(){ if(threadPoolExecutor != n... ...
分类:
编程语言 时间:
2018-11-09 16:12:27
阅读次数:
177
线程的生命周期 新建状态 通过new创建线程对象,只是在堆中开辟了一块空间,线程并没有开始执行 可运行状态 用线程对象调用start()方法 就绪状态 等待cpu调度,线程并没有开始执行 运行状态 获得CPU的调度,开始执行,如果有多个CPU,允许多个线程并行执行 等待状态 同步锁调用wait方法, ...
分类:
编程语言 时间:
2018-10-28 19:21:34
阅读次数:
146
线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。 Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方式。但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。 ...
分类:
编程语言 时间:
2018-10-16 11:59:55
阅读次数:
182
一,线程的生命周期 二,如何处理线程的安全问题:售票时重票,0号票 -1号票 原因:一个线程再操作共享数据的时,未执行完,另外的线程参与进来,导致共享数据存在了安全问题。 解决方法:java的同步机制:必须让一个线程操作共享数据完毕以后,其他进程才有机会参与共享数据 方式一:同步代码块 同步监视器: ...
分类:
编程语言 时间:
2018-10-13 12:58:04
阅读次数:
208
线程的生命周期: 1)初始状态:此时线程只是处于JVM进程中,只是创建了一个线程对象,并没有真正开始运行。 2)可动行状态:调用线程对象的start()方法,此时线程才真正的被创建,进入可运行状态,等待CPU的调度。“万事俱备,只欠CPU”。 3)运行状态:正在运行的线程,此时它拥有CPU的执行权。 ...
分类:
编程语言 时间:
2018-10-01 00:15:26
阅读次数:
166
前言 ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用ThreadLocal,就可能会导致内存泄漏。下面,我们将围绕三个方面来分析ThreadLocal 内存泄漏的问题 ThreadL ...
分类:
编程语言 时间:
2018-09-11 14:17:02
阅读次数:
147