Java线程同步以及在同步方法中使用wait()/notify()/notifyAll()//磁盘调度

本文介绍了Java线程同步的概念和synchronized关键字的作用,通过实例解释了如何避免线程同步中的死锁问题,详细讲解了wait(), notify()和notifyAll()的使用。此外,还探讨了磁盘调度的不同算法,如FCFS、SSTF、SCAN和CSCAN,以及考虑的因素,如寻道时间和公平性。" 118256596,7242844,对比学习与梯度累积:如何实现大 batch_size 效果?,"['深度学习', '机器学习', '神经网络', '对比学习', '优化']
摘要由CSDN通过智能技术生成

线程的同步

用户在处理多线程的时候,变量有可能被多个线程共享,简单举一个例子,就是当一个工资负责人正在使用账本出账的是时候,一个员工也要使用账本来领取工资,这时情况就是工资未出账完成就被领取了,这就造成混乱.

为了解决类似的问题Java就作出了线程同步的方法,就是用synchronized关键字修饰一个方法,当这个方法被synchronized关键字修饰后,线程调用这个方法时就不会被打扰,也就是另一个线程要等待线程执行完该方法后才能到自己执行该方法.

总的来说,所谓线程同步就是若干个线程使用synchronized关键字修饰的方法

结合出账例子

package Chapter_15.Part_4;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class myWindow extends JFrame implements ActionListener {
   
    Bank bank;
    Thread thread1;
    Thread thread2;
    JTextArea jTextArea1;
    JTextArea jTextArea2;
    JButton jButton;

    public myWindow() {
   
        bank = new Bank();
        thread1 = new Thread(bank);
        thread1.setName("存");
        thread2 = new Thread(bank);
        thread2.setName("取");
        setBounds(500, 500, 500, 500);
        setLayout(new FlowLayout());
        setTitle("演示");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        jButton = new JButton("开始演示");
        jButton.addActionListener(this);
        add(jButton);
        jTextArea1 = new JTextArea(5, 16);
        add(new JScrollPane(jTextArea1));
        jTextArea2 = new JTextArea(5, 16);
        add(new JScrollPane(jTextArea2));
        bank.setMoney(100);
        bank.setText1(jTextArea1, jTextArea2);
        validate();
    }

    @Override
    public void actionPerformed(ActionEvent actionEvent) {
   
        if (thread1.isAlive() == false && thread2.isAlive() == false) {
   
            thread1 = new Thread(bank);
            thread1.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值