线程同步的使用(一)

使用this作为线程对象锁

在所有线程中,相同对象中的synchronized会互斥。

语法结构:

synchronized(this) {
    //同步代码
}

public synchronized void accessval(int newVal){
    //同步代码
}
/**
 * 定义程序员类
 */
class Programmer {
    private String name;
    
    public Programmer(String name){
        this.name = name;
    }

    /**
     * 打开电脑
     */
    synchronized public void computer(){
        try{
            System.out.println(this.name+" 接通电源");
            Thread.sleep(500);
            System.out.println(this.name+" 电脑开机");
            Thread.sleep(500);
            System.out.println(this.name+" 系统启动");
            Thread.sleep(500);
            System.out.println(this.name+" 启动成功");
        }catch(InterruptedException e){
            e.printStackTrace();
        }
    }

    /**
     * 编码
     */
    synchronized public void coding(){
        try{
            System.out.println(this.name+" 双击idea");
            Thread.sleep(500);
            System.out.println(this.name+" idea启动完毕");
            Thread.sleep(500);
            System.out.println(this.name+" 开始写代码");
        }catch(InterruptedException e){
            e.printStackTrace();
        }
    }
}

/**
 * 打开电脑的工作线程
 */
class Working1 extends Thread {
    private Programmer p;
    
    public Working1(Programmer p){
        this.p = p;
    }

    @Override
    public void run(){
        this.p.computer();
    }
}

/**
 * 编写代码的工作线程
 */
class Working2 extends Thread {
    private Programmer p;

    public Working2(Programmer p){
        this.p = p;
    }

    @Override
    public void run(){
        this.p.coding();
    }
}

public class TestSyncThread {
    public static void main(String[] args){
        Programmer p = new Programmer("张三");
        new Working1(p).start();
        new Working2(p).start();
    }
}

相关推荐

  1. 线同步使用

    2024-07-15 07:02:03       26 阅读
  2. 线同步使用(二)

    2024-07-15 07:02:03       17 阅读
  3. 20240425-线基础-线使用

    2024-07-15 07:02:03       38 阅读
  4. 线同步四项原则

    2024-07-15 07:02:03       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 07:02:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 07:02:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 07:02:03       58 阅读
  4. Python语言-面向对象

    2024-07-15 07:02:03       69 阅读

热门阅读

  1. lvs集群

    lvs集群

    2024-07-15 07:02:03      27 阅读
  2. Bootstrap 栅格系统的工作原理?

    2024-07-15 07:02:03       24 阅读
  3. Nacos

    Nacos

    2024-07-15 07:02:03      24 阅读
  4. 中介者模式(大话设计模式)C/C++版本

    2024-07-15 07:02:03       27 阅读
  5. 软设之中介者模式

    2024-07-15 07:02:03       22 阅读
  6. Go语言指针及不支持语法汇总

    2024-07-15 07:02:03       22 阅读
  7. linux命令更新-iostat 和 iotop

    2024-07-15 07:02:03       22 阅读
  8. IOSUI自动化之mobiledevice

    2024-07-15 07:02:03       22 阅读
  9. Flask `before_request` 方法解析

    2024-07-15 07:02:03       26 阅读