java 线程加锁问题(有代码)

java 线程加锁问题(有代码),第1张

你的代码我没看,也没运行。

但我可以很明确的告诉你,你是没有办法控制线程的执行顺序的,不知道你学没学 *** 作系统,等你学了线程调度你就知道为什么了,多线程的一个特点就是不可重现性。像sleep这些函数只能在一定程度上控制你的线程执行,但根本不是绝对的。因为当线程1在sleep时,系统也不一定会调用另一线程。

还有加锁也不是为了控制线程的执行顺序,它的目的是为了保护共享的互斥资源。

private BlockingQueue<String>msgQueue

//用双缓冲队列方式存放客户端发来的数据,其线程是安全的

msgQueue = new LinkedBlockingQueue<String>()

//通过offer方式存入数据

msgQueue.offer(str)//日志存入了队列中

供你参考

多线程的同步锁通过synchronized实现

有俩种方式 一种是在代码块加锁

代码块加锁时可以指定任意类的实例过的对象

即锁在这个对象上(任何对象都有一个锁)

使同一时间内只有一个线程可以访问到代码块中

另外一种就是以synchronized关键字修饰方法

这时加锁的对象就是类本身的实例 即this

以上 O(∩_∩)O


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11953517.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存