【并发与多线程】
多线程对应的是cpu,高并发对应的是访问请求,可以用单线程处理所有访问请求,也可以用多线程同时处理访问请求。
喵学长
爱好动漫、游戏的二次元,Java工程师
展开
-
多线程的基本干概念
多线程:一个应用程序有多条执行路径(及其图解)1:要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在。 2:什么是进程?通过任务管理器我们就看到了进程的存在。而通过观察,我们发现只有运行的程序才会出现进程。进程:就是正在运行的程序。进程是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。3原创 2017-03-04 16:21:43 · 2964 阅读 · 0 评论 -
理解synchronized
理解synchronized再从下面几个角度来进一步理解一下synchronized:· 可重入性· 内存可见性· 死锁 可重入性synchronized有一个重要的特征,它是可重入的,也就是说,对同一个执行线程,它在获得了锁之后,在调用其他需要同样锁的代码时,可以直接调用,比如说,在一个synchronized实例方法内,可以转载 2017-04-18 08:19:12 · 3089 阅读 · 0 评论 -
ThreadLocal详解
转载自:http://blog.csdn.net/lufeng20/article/details/24314381ThreadLocal是什么早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变转载 2017-03-06 16:39:07 · 2939 阅读 · 0 评论 -
线程安全的类
线程安全的类A:StringBufferB:VectorC:HashtableD:如何把一个线程不安全的集合类变成一个线程安全的集合类用Collections工具类的方法即可。static Collection synchronizedCollection(Collection c)原创 2017-03-04 17:35:00 · 2862 阅读 · 0 评论 -
线程安全问题及解决方法
(1)多线程安全问题的原因(也是我们判断一个程序是否有线程安全问题的依据)A:是否有多线程环境B:是否有共享数据C:是否有多条语句操作共享数据 (2)如何解决多线程安全问题呢?基本思想:让程序没有安全问题的环境。怎么实现呢?把多个语句操作共享数据的代码给锁起来,让任意时刻只能有一个线程执行即可(同步代码块)(10)同步解决线程安全问题A:同步代码块原创 2017-03-04 17:13:36 · 3428 阅读 · 1 评论 -
线程的生命周期
线程的生命周期A:新建B:就绪C:运行D:阻塞E:死亡原创 2017-03-04 16:59:32 · 3214 阅读 · 0 评论 -
线程的控制(常见方法)
线程的控制(常见方法)休眠线程、加入线程、礼让线程、后台线程A:休眠线程public static void sleep(long millis):在指定的毫秒数内让当前正在执行的线程休 眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。 该线程不丢失任何监视器的所属权。 Eg:Thread.sleep(1000);B:加入线程public fina原创 2017-03-04 16:57:40 · 3589 阅读 · 0 评论 -
线程的调度和优先级问题
线程的调度和优先级问题A:线程的调度a:分时调度b:抢占式调度 (Java采用的是该调度方式)B:获取和设置线程优先级 我们的线程没有设置优先级,肯定有默认优先级。 那么,默认优先级是多少呢? 如何获取线程对象的优先级? public final int getPriority():返回线程对象的优先级 如何设置线程对象的优先级呢? pub原创 2017-03-04 16:55:25 · 3459 阅读 · 0 评论 -
面试题
1、面试题:run()和start()的区别// run():仅仅是封装被线程执行的代码,直接调用是普通方法// start():首先启动了线程,然后再由jvm去调用该线程的run()方法。 问题:// MyThread my = new MyThread();// my.start();// // IllegalThreadStateException:非法的线原创 2017-03-04 16:52:44 · 2597 阅读 · 0 评论 -
多线程的实现方法
多线程的实现方法需求:我们要实现多线程的程序。 如何实现呢? 由于线程是依赖进程而存在的,所以我们应该先创建一个进程出来。 而进程是由系统创建的,所以我们应该去调用系统功能创建一个进程。 Java是不能直接调用系统功能的,所以,我们没有办法直接实现多线程程序。 但是呢?Java可以去调用C/C++写好的程序来实现多线程程序。 由C/C++去调原创 2017-03-04 16:50:15 · 2767 阅读 · 0 评论 -
Java程序的运行原理及JVM的启动是多线程的吗?
Java程序的运行原理及JVM的启动是多线程的吗?A:java 命令会启动 java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是 启动了一个进程。该进程会自动启动一个 “主线程” ,然后主线程去调用某个类 的 main 方法。所以 main方法运行在主线程中。 B:JVM的启动是多线程的,因为它最低有两个线程启动了,主线程和垃圾回收线程。 原因是垃圾回收线程原创 2017-03-04 16:23:00 · 3184 阅读 · 0 评论 -
java中wait()\notify()\notifyAll()解析
一、注意事项:1.1 wait() 与 notify/notifyAll 方法必须在同步代码块中使用。 二、wait() 与 notify/notifyAll() 的执行过程2.1 由于 wait() 与 notify/notifyAll() 是放在同步代码块中的,因此线程在执行它们时,肯定是进入了临界区中的,即该线程肯定是获得了锁的。当线程执行wait()时,会把当前的锁释放,原创 2017-07-08 14:04:06 · 3861 阅读 · 0 评论