首页 » 网站建设 » php多线程上锁技巧_Java多线程去世锁锁锁锁

php多线程上锁技巧_Java多线程去世锁锁锁锁

访客 2024-12-18 0

扫一扫用手机浏览

文章目录 [+]

去世锁的规范定义:凑集中的每一个进程都在等待只能由本凑集中的其他进程才能引发的事宜,那么该组进程是去世锁的。

一种环境,此时实行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被

php多线程上锁技巧_Java多线程去世锁锁锁锁

去世锁

php多线程上锁技巧_Java多线程去世锁锁锁锁
(图片来自网络侵删)

其他线程占用并堵塞了的资源。
例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了去世锁征象。

题目:两个人就餐,但是只有一双筷子,A已经拿起了一只筷子,他只须要等待第二只筷子,但是这个时候B也拿起了一只筷子,也在等待另一只筷子,这时便是一个去世锁状态,谁也吃不了饭。

详细代码如下:

public class ThreadBLock {

static String chopsticks1 = \"大众筷子1\公众,chopsticks2 = \公众筷子2\公众;

static class A extends Thread{

public void run(){

synchronized(chopsticks1){ //synchronized关键字是用来对共享资源实施同步访问的,被该关键字润色的代码,

// 在有线程开始实行时首先对其进行锁定,其他线程此时不能实行该段代码,知道当前哨程实行完解除锁定

System.out.println(\"大众A 拿起了 \"大众+chopsticks1+\"大众, 等待\"大众+chopsticks2);

try {

Thread.sleep(100);

} catch (InterruptedException e) {

}

synchronized(chopsticks2){

System.out.println(\"大众A 又拿起了 \"大众+chopsticks2);

}

}

}

}

static class B extends Thread{

public void run(){

synchronized(chopsticks2){

System.out.println(\"大众B 拿起了 \"大众+chopsticks2+\"大众,等待 \"大众+chopsticks1);

try {

Thread.sleep(100);

} catch (InterruptedException e) {

}

synchronized(chopsticks1){

System.out.println(\公众B 又拿起了 \"大众+chopsticks1);

}

}

}

}

}

然后写一个测试类来看当作果:

import cn.gjz.study.ThreadBLock.A;

import cn.gjz.study.ThreadBLock.B;

public class ThreadLockTest extends Thread {

public ThreadLockTest(){

this.setDaemon(true);

}

public void run(){

while(true){

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

System.out.println(\"大众守护线程,程序正在运行...\公众);

}

}

public static void main(String[] args){

new A().start();

new B().start();

new ThreadLockTest().start();

}

}

大略的小例子,有助于我们小白理解去世锁的观点。
大神请绕过!

标签:

相关文章

php为无色透明技巧_水货钻石其实也还行

从各种钻石中,可以看到大大小小的“包裹体” 图片来源:参考文献包裹体的种类多样。比钻石形成更早的包裹体,叫“原生包裹体”;与钻石同...

网站建设 2024-12-19 阅读0 评论0

phpstudy发送gbk技巧_php的文件上传

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己去世磕的态度。细微之处不放过,多敲多练是王道。 学习就像爬山,得一步一步...

网站建设 2024-12-19 阅读0 评论0