Java与操作系统中的 I/O 模型学习

I/O 分类

  • 按传输数据方式:

字节流:以 byte 为基本单位进行,XXXStream 表示字节流

字符流:以字符为基本单位,字符又根据编码方式不同,一个字符对应不同大小的 byte。XXXReader、xxxWriter 表示字符流相关类

字节流可以处理任何类型的数据,如图片,视频等;字符流只能处理字符类型的数据。

  • 按输入输出方向:

输入流(InXXX)、输出流(OutXXX)

Java 中的 I/O 种类
在这里插入图片描述

同步与异步

调用者是否主动等待调用的返回结果

同步和异步关注的是消息通信机制,即消息是怎么返回的,是直接返回还是通过回调返回。

同步和异步的区别最大在于异步的话调用者不需要等待处理结果,被调用者会通过回调等机制来通知调用者其返回结果。

阻塞与非阻塞

阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.

阻塞调用是指调用结果返回之前,当前线程会被

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment信号驱动式I/O模型是一种异步的I/O模型,它可以同时处理多个I/O操作,提高系统的并发性和响应性。下面是详细介绍: 1. 应用程序向内核_music, container, false); Button btnPlay = view.findViewById(R.id.btn_play); Button btnPause = view.findViewById(R.id.btn发起I/O请求,请求在指定的文件描述符上监听I/O事件。 2. 内核在指定的文件_pause); Button btnStop = view.findViewById(R.id.btn_stop); mMediaPlayer = MediaPlayer.create(getContext(), R.raw.music); btn描述符上等待I/O事件发生。 3. 当I/O事件发生时,内核会向应用程序发送Play.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!mMediaPlayer.isPlaying()) { 一个信号,通知应用程序有I/O事件需要处理。 4. 应用程序收到信号后,可以在 mMediaPlayer.start(); } } }); btnPause.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View信号处理函数处理相应的I/O事件。在信号处理函数,应用程序可以读写数据,或 v) { if (mMediaPlayer.isPlaying()) { mMediaPlayer.pause(); } } }); btnStop.setOnClickListener(new View者关闭文件描述符等操作。 5. 当应用程序完成对I/O事件的处理后,可以再次向内核.OnClickListener() { @Override public void onClick(View v) { if (mMediaPlayer.isPlaying()) { mMediaPlayer.stop(); 发起I/O请求,等待下一个I/O事件的发生。 信号驱动式I/O模型可以有效地 mMediaPlayer = MediaPlayer.create(getContext(), R.raw.music); } } }); return view; } @Override 避免阻塞等待I/O操作完成的情况,提高系统的并发性和响应性。但是, public void onDestroy() { super.onDestroy(); if (mMediaPlayer != null) { mMediaPlayer.release(); mMediaPlayer =信号驱动式I/O模型需要应用程序处理信号,增加了一定的复杂度。同时, null; } } } ``` 7.其他模块的Fragment和Java代码与音乐模块类似,这里由于信号可能会被其他信号打断,因此需要应用程序进行信号处理函数的重入处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值