java线程专栏
梦断若水
努力不一定成功,放弃一定失败
展开
-
java技术---高并发与多线程
1.“高并发和多线程”总是被一起提起,感觉两者好像相等,实则 高并发 ≠ 多线程(1)要想系统能够适应高并发状态,则需要从各个方面进行系统优化(2)硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化等(3)多线程只是解决高并发方法之一(4)多线程是处理高并发的一种编程方法,即并发需要用多线程实现2.高并发(High Concurrency)(1)是一种系统运行...原创 2019-12-16 12:27:12 · 301 阅读 · 1 评论 -
java技术--多线程概念探究
1.线程安全和非线程安全(1)java面试中常见问答,如下: <1>ArrayList是非线程安全的,Vector是线程安全的; <2>HashMap是非线程安全的,HashTable是线程安全的; <3>StringBuilder是非线程安全的,StringBuffer是线程安全的(2)非线程安全是指多线程操作同一个对象...原创 2019-12-16 11:50:59 · 80 阅读 · 0 评论 -
java技术--线程并发产生的原因
1.CPU的时间是按时间片分的,而不是一个时间点,并发问题是由于CPU线程切换导致的(1)现在假设有一段代码:if(i == 1) { i++; //断点1 system.out.print(i); } //断点2(2)有两个线程A,B同时执行这一段代码 <1>假设A线程先被CPU调度,然而A线程在断点1处,时间片到期了,此时A线程的代码...原创 2019-12-16 10:01:31 · 231 阅读 · 0 评论 -
java技术--多线程通讯机制
1.开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些逻辑的场景2.或者是线程 A 在执行到某个条件通知线程 B 执行某个操作3.多线程通讯机制,主要有三种机制<1>传统线程通信synchronized + wait + notify 1.Object类的wait()、notify() 、notifyAll()三个方法必须由同步监视器对象来调用,分两种情况: ...原创 2019-08-29 13:16:07 · 239 阅读 · 0 评论 -
java线程---Callable 和 Future
创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口;这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果;如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦;自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果1.Callable 接口 &...原创 2019-04-29 19:25:26 · 199 阅读 · 0 评论 -
java多线程总结
1.单线程和多线程区别 1.单线程: (1)在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行 (2)系统稳定、扩展性极强、软件丰富,多用于点对点的服务 (3)同步应用程序的开发比较容易,效率通常比多线程应用程序低 (4)完成同步任务所用的时间比预计时间长,应用程序可能会不响应 ...原创 2019-04-24 15:37:55 · 253 阅读 · 0 评论 -
java线程---线程池
1.线程池 (1)使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务 (2)主要就是关注如何缩短或调整创建线程,销毁线程时间的技术,从而提高服务器程序性能 (3)限制系统中执行线程的数量 <1> 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果; <2>少了浪费了系统资源,多了造成系统拥挤效率...原创 2019-05-03 23:45:42 · 184 阅读 · 0 评论 -
java线程---Runnable 接口
2.实现Runnable 接口步骤: 1、定义类实现Runnable接口 2、覆盖Runnable接口中的run方法,运行的代码放入run方法中。 3、通过Thread类建立线程对象。 4、将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。 因为,自定义的run方法所属的对象是Ru...原创 2019-04-26 18:24:43 · 506 阅读 · 0 评论 -
java线程---- Thread 类
1.继承 Thread 类:实现线程的创建 步骤: 1.定义类继承Thread 2.覆写Threa类的run方法。 自定义代码放在run方法中,该run方法的方法体就代表了线程要完成的任务 3.创建Thread子类的实例,即创建了线程对象 4.调用线程对象的start()方法来启动该线程 继承类必须重写 run() 方法,该方法是新线程的入口点。它也必须...原创 2019-04-26 17:01:27 · 226 阅读 · 0 评论