关于GUI线程//设备管理技术

GUI线程

当Java程序包含图像用户界面时,Java虚拟机在运行应用程序时会自动启动更多的线程,其中有两个重要的线程
AWT-EventQueue //这个线程负责处理GUI事件
AWT-Window //这个线程负责将窗体或组件绘制到桌面

当发生GUI事件是Java虚拟机就会将CPU资源切换给AWT-EventQueue,例如单击程序中的按钮触发ActionEvent事件,AWT-EventQueue线程就会立刻排队等待处理事件执行代码

带滚动条字幕的小字典

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

public class myDictionary extends JFrame implements ActionListener, Runnable {
    JTextField jTextFieldIn;
    JTextField jTextFieldOut;
    JButton jButton;
    Thread thread;
    JLabel jLabel;
    Police police;

    myDictionary() {
        setTitle("带字幕滚动的小词典");
        setBounds(400, 400, 400, 400);
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setVisible(true);
        init();
        validate();
    }

    public void init() {
        thread = new Thread(this);
        police = new Police();
        jTextFieldIn = new JTextField(10);
        jTextFieldIn.addActionListener(police);
        add(jTextFieldIn);
        jTextFieldOut = new JTextField(10);
        police.setjTextField(jTextFieldOut);
        add(jTextFieldOut);
        jButton = new JButton("加速滚动");
        jButton.addActionListener(this);
        add(jButton);
        jLabel = new JLabel("欢迎使用词典");
        jLabel.setFont(new Font("", Font.BOLD, 24));
        add(jLabel);
        thread.start();
    }

    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        thread.interrupt(); //主动打断线程
    }

    @Override
    public void run() {
        while (true) {
            int x = jLabel.getBounds().x;
            x = x + 5;
            int y = 60;
            jLabel.setLocation(x, y);
            if (x > 400) {
                x = 10;
                jLabel.setLocation(x, y);
            }
            try {
                thread.sleep(200);  //移动一次休息0.2秒
            } catch (InterruptedException e) {
                String str = jTextFieldIn.getText();
                if (str.equals("end")) { //如果输入文本框有end就停止线程
                    return;
                }
            }
        }
    }
}
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Scanner;

public class Police implements ActionListener {
    JTextField jTextFieldOut;
    File file = new File("C:\\Users\\Administrator\\Desktop","小词典数据.txt");
    HashMap<String,String> hashMap;
    Scanner scanner = null;
    Police(){
        hashMap = new HashMap<String, String>();
        try {
            scanner = new Scanner(file);
            while (scanner.hasNext()){
                String englishWord = scanner.next();
                String chineseWord = scanner.next();
                hashMap.put(englishWord,chineseWord);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public void setjTextField(JTextField jTextField) {
        this.jTextFieldOut = jTextField;
    }

    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        String str = actionEvent.getActionCommand();    //获取点前事件源的文本
        if (hashMap.containsKey(str)){
            String text = hashMap.get(str);
            jTextFieldOut.setText(text);
        }
        else{
            jTextFieldOut.setText("NotFound");
        }
    }
}
public class Example15_8 {
    public static void main(String[] args) {
        myDictionary myDictionary = new myDictionary();
    }
}

运行结果图
在这里插入图片描述

设备管理技术

设备管理技术主要包括

  • 通道技术

引入通道的目的是使数据的传输独立于CPU,将CPU从烦琐的I/O工作中解脱出来。设置通道后,CPU只需向通道发出输入输出命令,通道收到命令后,从内存中取出本次输入输出要执行的通道程序加以执行,当通道完成输入输出任务后,才向CPU发出中断信号。

  • DMA技术

直接内存存取(Direct Memory Access,DMA)是指数据在内存与输入输出设备之间实现直接成块传送,即在内存与输入输出设备之间传送一个数据库的过程中,只需要CPU在开始(即向设备发出“传送一块数据”的命令)与结束(CPU通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时进行处理,实际操作过程由DMA硬件直接执行完成,CPU在此传送过程中可执行别的任务。

  • 缓冲技术

缓冲技术(Butfer Technology)可提高外设利用率,尽可能使外设处于忙状态。缓冲技术可以采用硬件缓冲和软件缓冲。
引入缓冲的主要目的
1.缓和CPU与输入输出设备间速度不匹配的矛盾。
2.减少对CPU的中断频率,放宽对中断响应时间的限制。
3.提高CPU和输入输出设备之间的并行性。

  • Spooling技术

Spooling(Simultaneous Peripheral Operation On-Line,外部设备联机并行操作)是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。这种技术实际上是用一类物理设备模拟另一类物理设备的技术,可以将低速的独占设备改造成一种可共享的设备,而且一台物理设备可以对应若干太虚拟设备同类设备/Spooling系统有"预输入程序",“缓输入程序”,“井管理程序”,“输入输出井”

CET4P197

  • incentive
  • hereby
  • ethic
  • administer
  • gown
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值