synchronized
1.怎么创建多线程
2.怎么保证多线程修改同一数据的同步性
3.使用线程池创建多线程
时间问题,先看代码
角色类
1 | public class Role { |
测试
1 | public static void test1() { |
结果:
36668线程–加血后:650
36668线程–加血后:600
14a84线程掉血–后:600
36668线程–加血后:700
14a84线程掉血–后:800
36668线程–加血后:800
36668线程–加血后:900
14a84线程掉血–后:1000
36668线程–加血后:1000
血量达到上限999,停止恢复!
14a84线程掉血–后:950
血量达到上限999,停止恢复!…..
线程池
线程池类
1 | public class MyThreadPool { |
测试
1 | public static void main(String[] args) { |
结果:
…
线程9接到任务,执行
线程7接到任务,执行
线程8接到任务,执行
线程7线程–加血后:800
线程9线程–加血后:700
线程6线程–加血后:600
没有任务!休息
线程1接到任务,执行
没有任务!休息
线程8线程–加血后:900
没有任务!休息
线程1线程–加血后:1000
没有任务!休息
线程2接到任务,执行
线程5接到任务,执行…
最后看一下,wait sleep 区别
类不同 :
wait -> object
sleep: Thread
锁的释放:
wait -> 会释放锁
sleep -> 抱着锁睡觉
作用范围:
wait :同步代码块中
sleep: 没有限制
异常:
wait: 不需要捕获异常
sleep: 需要捕获异常
小唠嗑:
想更加深入的了解多线程的使用,进看《Java中级_多线程三》篇
本章到这里就结束了,谢谢耐心看到这里的各位Boss,如果觉得有哪里说的不好的地方,还请高抬贵手多多原谅,不惜指教。
最后,谢谢!