一、Java 线程实现/创建方式 注意: ? 新建的线程不会自动开始运行,必须通过start( )方法启动 ? 不能直接调用run()来启动线程,这样run()将作为一个普通方法立即执行,执行完毕前其他线程无法并发执行 ? Java程序启动时,会立刻创建主线程,main就是在这个线程上运行。当不再产 ...
分类:
编程语言 时间:
2020-07-20 10:21:52
阅读次数:
74
多线程创建 在spring 中还可以注解支持创建 实例如下 1Thread 2Rundable 也可以尝试用lamda表达式的两种写法简化代码 3callable 4 线程池 5spring注解,一个注解就能异步的开线程帮我们操作,从而不用占用主线程(在loginManage类中) 然后想用的时候结 ...
分类:
编程语言 时间:
2020-06-24 00:42:36
阅读次数:
75
可见性:可见性指的是一个线程对主内存的修改可以被其他线程及时地察觉到。 导致共享变量在线程间不可见的原因: 1、线程交叉执行 2、指令重排序结合线程交叉执行 3、共享变量的值没有及时更新到主存中 Java内存模型:Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规 ...
分类:
编程语言 时间:
2020-02-20 11:41:36
阅读次数:
79
前言 乍看可见性,不明白它的意思。联想到线程,意思就是一个线程对主内存的修改及时的被另一个线程观察到,即为可见性。 那么既然有可见性,会不会存在不可见性呢? 答案是肯定的,导致线程不可见的原因是什么呢? 有三个原因: (1)线程交叉执行。 (2)重排序结合线程交叉执行。 (3)共享变量更新后的值没有 ...
分类:
编程语言 时间:
2019-12-15 21:41:51
阅读次数:
101
定义 Handler是用来结合线程的消息队列来发送、处理"Message对象"和"Runnable对象"的工具。 每一个Handler实例之后会关联一个线程和该线程的消息队列。也就是说,当你创建一个Handler的时候,从此开始,他就会自动关联到所在的线程/消息队列,然后它就会陆续把Message/ ...
分类:
其他好文 时间:
2019-07-15 23:56:01
阅读次数:
213
NIO ------------ 1、传统IO 传统IO是阻塞模式,处理并发的时候,需要启动多个线程, cpu需要在多线程上下文之间进行频繁切换,而大多数线程通 常处于阻塞状态,导致CPU资源利用底下。 2、New IO 非阻塞,传统IO是阻塞模式,不需要启动大量线程,通常结合 线程池能够实现高并发... ...
分类:
编程语言 时间:
2018-04-22 21:43:50
阅读次数:
273
出处:http://blog.csdn.net/tuzongxun 最近的项目有一个在线网页交流的需求,由于很久以前做过的demo已经忘记的差不多了,因此便重新学习一下。 我计划的大致实现步骤分这样几大步: 1、使用awt组件和socket实现简单的单客户端向服务端持续发送消息; 2、结合线程,实现 ...
分类:
编程语言 时间:
2017-09-27 14:03:38
阅读次数:
178
Java没有内置的字符串类型,而是在标准的Java类库中提供了一个预定义类,叫做String。它允许使用+号对字符串进行拼接,当将一个字符串与一个非字符串进行拼接时,后者会被转换成字符串。对于修改字符串String类并没有提供用于修改字符串的方法,并不能对实际字符串进行修改,字符串被声明为常量对象, ...
分类:
其他好文 时间:
2017-08-13 23:27:40
阅读次数:
191
以下内容转自http://ifeve.com/non-blocking-algorithms/: 在并发上下文中,非阻塞算法是一种允许线程在阻塞其他线程的情况下访问共享状态的算法。在绝大多数项目中,在算法中如果一个线程的挂起没有导致其它的线程挂起,我们就说这个算法是非阻塞的。 为了更好的理解阻塞算法 ...
分类:
编程语言 时间:
2017-06-17 18:38:59
阅读次数:
224
Collection 集合层次的根接口 List 有序 有索引 可以重复 ArrayList 底层数据结构是数组 查询快 增删快 线程不安全 效率高 LinkedList 底层数据结构是链表 查询慢 增删快 线程不安全 效率高 Vector 底层数据是数组 查询和增删介于前两者之间 线程安全 效率低 ...
分类:
其他好文 时间:
2017-03-28 23:50:56
阅读次数:
231