
多线程并发第一本:实战Java高并发程序设计(第2版)
文章平均质量分 67
多线程并发第一本:实战Java高并发程序设计(第2版)
这是我专门度过的第一本入门并发书籍
一只小小狗
大家好我是练习时长2年半的程序员
展开
-
wait() 和 sleep()区别
查看输出结果可知,虽然这里T2拿到锁之后马上就进行了唤醒等待的t1,但是此时的t1也只是进入了就绪状态,并没有真的拿到了锁执行同步代码块中的代码,并且在sleep中t2也是紧紧的将锁抓在手中并且入睡。可以参考线程的生命周期以及动态如有错误欢迎指正原创 2022-06-02 14:29:52 · 203 阅读 · 1 评论 -
两个线程交替打印到多线程交替打印
把Object类模板当做一把锁,两个线程去争夺这一把锁,最后的结果为预期中交替打印,但是这里会发现这里打断点可以看到,当打印最后的信息的时候进入了wait方法,使得当前线程等待,如果不最后唤醒对方,一定会使得有一个线程一直处于无限制的等待中。我们以上面通用的思考方式去写下面的代码。运行结果发现有很多种可能性,答案是不确定的,最基本的输出就是两个数组总的全队列输出,在加第三个数组中的一个值输出,比如1a2b3c4d5e6f7gA。最好的情况下就是全部输出但是程序不停,而且可能无法保证交替1A2B3原创 2022-06-02 13:46:05 · 515 阅读 · 0 评论 -
Thread start()和run()的区别
start()方法是新起一个线程去执行run()方法中的代码。相当于除了主线程之外又有新的线程进入就绪状态。run()方法只是一个正常的abstart抽象方法的重写。只有主线程,并没有新的线程被创建,需要按照原来主线程的执行顺序来执行run()中代码。可以看到Thread类也只是实现了Runnable 接口而我们的Runnable接口也只是一个可以进行函数式Lambda表达式的接口而已。说白了run()只是一个正常的方法。可以看到start() 方法是调用了本地方法栈中的native方法start0原创 2022-06-01 17:55:33 · 502 阅读 · 0 评论