1、继承Thread类创建多线程:继承java.lang.Thread类,重写Thread类的run()方法,在run()方法中实现运行在线程上的代码,调用start()方法开启线程。 2、实现Runable接口:实现java.lang.Runnable接口,重写run()方法,在run()方法中实 ...
分类:
编程语言 时间:
2020-01-11 11:42:31
阅读次数:
85
什么是线程池?为什么要用线程池? 1、降低资源的消耗。降低线程创建和销毁的资源消耗; 2、提高响应速度:线程的创建时间为T1,执行时间T2,销毁时间T3,免去T1和T3的时间 3、提高线程的可管理性。 实现一个我们自己的线程池 1、 线程必须在池子已经创建好了,并且可以保持住,要有容器保存多个线程; ...
分类:
编程语言 时间:
2020-01-08 22:44:59
阅读次数:
87
1. Java虚拟机运行时数据区 在JDK1.8之前,JVM运行时数据区分为堆、虚拟机栈、本地方法栈、方法区、程序计数器。如下图所示: 虚拟机栈:线程私有,随线程创建而创建。栈里面是一个一个“栈帧”,每个栈帧对应一次方法调用。栈帧中存放了局部变量表(基本数据类型变量和对象引用)、操作数栈、方法出口等 ...
分类:
编程语言 时间:
2020-01-08 14:14:16
阅读次数:
66
如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。这就是线程池的目的了。线程池为线程生命周期的开销和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程池主要流程 用户通过submit提交一个任务 ...
分类:
编程语言 时间:
2020-01-06 21:17:28
阅读次数:
92
第一种实现方式:继承Thread类,并实现run方法,这种情况下每个线程对象都有一个独立的run方法 package thread; /* @author zsben @create 2020-01-03 9:52 多线程创建的第一种方法:继承于Thread类 1.创建一个继承于Thread的类 2 ...
分类:
编程语言 时间:
2020-01-04 12:42:17
阅读次数:
75
IO多路复用是指同一个进程(线程)处理多个IO数据流。 注意和多线程+池模型的区别,多线程+池模型是指每个线程处理一个IO数据流。 多路复用的好处是 1,不会增加新的进程(线程),减少线程创建切换的开销。 2,当处理的消耗对比IO几乎可以忽略不计时,可以处理大量的并发IO,而不用消耗太多CPU/内存 ...
分类:
其他好文 时间:
2019-12-29 18:37:30
阅读次数:
59
异步爬虫方式 目的:在爬虫中使用异步实现高性能的数据爬取操作 异步爬虫方式: 多进程,多线程 (不建议) 好处:可以为先关阻塞操作单独开启进程或者线程,阻塞操作就可以异步执行 坏处:无法无限制开启 线程池,进程池 (适当使用) 好处:可以降低系统对进程或者线程创建和销毁的评率,进而降低系统开销 坏处 ...
分类:
其他好文 时间:
2019-12-28 21:02:23
阅读次数:
103
在Java程序中,经常使用“+”运算符连接字符串,但不同情况下字符串连接的结果也是不同的Stringstr=sc.next();//空格作结束符Stringstr2=sc.nextline();//回车结束Date类用来表示日期和时间,该时间是一个长整型(long),精确到毫秒日期格式是不同步的,建议每个线程创建独立的格式实例。get,set方法eclipse中右键sourcegenerateha
分类:
编程语言 时间:
2019-12-25 01:10:06
阅读次数:
78
线程池为什么要有它: 线程创建要开辟虚拟机栈,释放线程要垃圾回收的。 server端要并发访问数据库的。 服务器启动有线程池放着。 线程池的概念: 1.任务队列 2.拒绝策略(抛出异常,直接丢弃,阻塞,放在临时队列) 3.初始化值init(min),初始线程池大小 3.active 5.max线程池 ...
分类:
编程语言 时间:
2019-12-19 12:56:46
阅读次数:
67
AtomicInteger 针对整数类型的原子操作,有getAndIncrement,compareAndSet等方法。 Thread 线程有三个常用属性,id,每次递增生成tid,同一个jvm中tid不重复;name,自定义的名字,从直观上识别是什么线程;daemon,是否是守护模式,为true表 ...
分类:
其他好文 时间:
2019-12-16 13:35:22
阅读次数:
220