Java计时器线程Timer/线程的联合//文件与文件系统

计时器线程Timer

当某些操作需要周期性地执行时可以使用计时器,用户可以使用Timer类
使用Timer类的构造方法Timer(int a,Object b),其中a参数是指毫秒,b是指实现了ActionListener接口的类

当Timer类对象每隔a毫秒后自动"震铃"一次,并回调b对象中actionPerformed(ActionEvent e)方法,要想计时器只震铃一次可以让计时器调用setRepeats(boolean b)方法,参数b设置为false即可

另外计时器还可以调用setInitialDelay(int delay)设置首次"震铃"的延时,如果没有调用此方法设置的话,默认的首次"震铃"就为参数a毫秒

还有一点要注意的是Timer类线程只能在GUI中使用

计时器线程的例子

package Chapter_15.Part_6;

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

public class myWindow extends JFrame implements ActionListener {
    Timer timer;
    JButton jButtonStar;
    JButton jButtonStop;
    JButton jButtonContinue;
    JTextField jTextField;
    String time;

    myWindow() {
        setTitle("操控时间");
        setBounds(400, 400, 400, 400);
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        timer = new Timer(1000, this);
        jButtonStar = new JButton("开始");
        jButtonStar.addActionListener(this);
        add(jButtonStar);
        jButtonStop = new JButton("暂停");
        jButtonStop.addActionListener(this);
        add(jButtonStop);
        jButtonContinue = new JButton("继续");
        jButtonContinue.addActionListener(this);
        add(jButtonContinue);
        jTextField = new JTextField(10);
        add(new JLabel("当前时间"));
        add(jTextField);
        validate();
    }


    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        if (actionEvent.getSource() == timer) {
            LocalTime localTime = LocalTime.now();
            time = localTime.getHour() + ":" + localTime.getMinute() + ":" + localTime.getSecond();
            jTextField.setText(time);
        } else if (actionEvent.getSource() == jButtonStar) {

            timer.start();
        } else if (actionEvent.getSource() == jButtonStop) {
            timer.stop();

        } else if (actionEvent.getSource() == jButtonContinue) {
            timer.restart();
        }
    }
}

package Chapter_15.Part_6;

public class Example15_12 {
    public static void main(String[] args) {
        myWindow myWindow = new myWindow();
    }
}

在这里插入图片描述

线程的联合

一个线程A在占用CPU资源的期间可以让其他线程B调用join()方法和本线程联合

B.join()

这种情况就称为线程A联合线程B,当线程B执行完run()方法后线程A就会重新排队等待CPU资源,以便恢复执行.但是联合线程B的前提是线程B事先已经调用start()方法,假如线程B不是活的那么,联合就没有任何效果

假如你去店里买蛋糕,店里马上给你做一个,这时候你在等蛋糕做好,当蛋糕做好你就可以带着蛋糕走人了

线程联合的例子

package Chapter_15.Part_7;

public class Consumer implements Runnable {
    Thread boy;
    Thread vender;
    Car car;

    Consumer() {
        boy = new Thread(this);
        vender = new Thread(this);
        vender.setName("汽车制造厂");
    }

    class Car {
        String name;
        float price;
        Car(String name, float price) {
            this.name = name;
            this.price = price;
        }
    }

    @Override
    public void run() {
        if (Thread.currentThread() == boy) {
            System.out.println("等汽车制造厂生产汽车");
            vender.start();
            try {
                vender.join();
            } catch (InterruptedException e) {
            }
            System.out.println("恭喜你成功购买一辆" + car.name + ",价格:" + car.price);
        } else if (Thread.currentThread() == vender) {
            try {
                Thread.sleep(1000);
                System.out.println(vender.getName() + "正在生产你想要的汽车,请稍等...");
                Thread.sleep(3000);
                System.out.println("汽车生产完毕!");
                car = new Car("特斯拉Model3", 271550);
            } catch (InterruptedException e) {
            }
        }
    }
}
package Chapter_15.Part_7;

public class Example15_13 {
    public static void main(String[] args) {
        Consumer consumer = new Consumer();
        consumer.boy.start();
    }
}

运行结果

C:\Users\Administrator\.IntelliJIdea2019.3\config\jdbc-drivers\Apache Derby\10.14.1.0\derby-10.14.1.0.jar" Chapter_15.Part_7.Example15_13
等汽车制造厂生产汽车
汽车制造厂正在生产你想要的汽车,请稍等...
汽车生产完毕!
恭喜你成功购买一辆特斯拉Model3,价格:271550.0

进程已结束,退出代码 0

文件与文件系统

文件

文件是具有符号名的,在逻辑上具有完整意义的一组相关信息项的集合)有格式的,也可以是无格式的。

信息项是构成文件的基本单位,可以是一个字符,也可以是一个记录。一个文件包括文件体和文件说明。

文件系统

操作系统的文件系统包括两个方面:一方面包括负责管理文件的一组系统软件;另一方面包括被管理的对象—文件。

文件系统的主要功能包括:按名存取、统一的用户接口、并发访问和控制、安全性控制、差错恢复等。

文件类型

根据文件的性质和用途不同,文件有多独分类方法。
按文件的用途,文件可以分系统文件)库文件和用户文件等,
按信息保存期限,文件可以分幅时文件、档案文件和永久文件。
UNIX系统将文件分为普通文件、目录文件和设备文件(特殊文件)等
按文件的保护方式,文件可以分为只读文件、读写文件、可执行文件和不保护文件等。
目前常用的文件系统类型有:FAT、VFAT、Ext2、NTFS、HPFS等。
文件分类的目的是对不同文件进行管理,提高系统效率和用户界面的友好性。

CET4P199

  • drum
  • beast
  • bet
  • bore
  • marriage
  • spade
  • crash
  • official
  • boot
  • charm
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值