摘要:
通过前面的学习,我们了解了在多线程+成员变量等情况下会出现线程安全的问题。那么解决线程安全问题除了使用synchronize关键字之外,还有另一种常用的解决思路,那就是使用ThreadLocal类,下面我们会对这个类做一下简介并指出两者的差异。 ThreadLocal:通过字面翻译过来意思是“线程本 阅读全文
摘要:
这一章,我们要来验证volatile关键字不是原子性的,OK,还是用代码来说话。 ①.线程类,操作i++ 500次 package com.multiThread.thread; publicclassNumberThreadimplementsRunnable{ privatevolatilein 阅读全文
摘要:
首先我们来看一张图,这张图描述了线程操作的几个步骤。 图已经描述的很清楚了,这里除了wait()之外,其他的前面都已经接触过了。 这一章我们主要来说一下和wait()相关的操作,其实和wait()相关的还有另外两个函数notity()和notifyAll()。 这三个函数都是Object类里的方法 阅读全文
摘要:
学习文件IO等操作的时候用到了流,例如文件上传的时候是将文件转换成二进制的流传到服务器端。 在不同线程之间通信也是用到了对管道流的操作,在java中提供了4个类来操作管道流(pipeStream): 1).PipedInputStream和PipedOutputStream 2).PipedRead 阅读全文
摘要:
一、线程安全问题: 当我们使用多个线程操作统一方法内的局部变量的时候,每个局部变量在当前线程里都有自己的副本,这种情况是不会出现线程安全问题的。当我们两个线程同时操作全局变量的时候,有可能会引发线程安全的问题。 ①.业务类 package com.multiThread.bean; publiccl 阅读全文
摘要:
我们先来看一段代码: ①.线程类,用全局布尔值控制线程是否结束,每隔1s打印一次当前线程的信息 package com.multiThread.thread; publicclassPrintStringimplementsRunnable{ privateboolean isContinuePri 阅读全文
摘要:
前言: 现在CPU都是多核的,可以同时处理多个进程,比如我笔记本的CPU是i3-370,它就是双核四线程的。那么这个核和线程都是什么呢? 核是针对硬件而言的,即核心,代表的是有多少个核心芯片。 线程是处理程序的基本单位,说到线程就要先介绍一下进程。举个例子吧:比如我的windows系统,需要同时开启 阅读全文