java 暂停循环_在用于暂停线程时,循环Thread.Sleep()会不会对性能造成影响?...

有(或者已经有)很多关于使用 Thread.Sleep() 方法的好坏的讨论 . 据我所知,它主要用于调试目的 .

现在我想知道:用于我的特定目的是不是很糟糕,也就是说,不断循环它以便能够暂停/恢复线程?我这样做是因为我想暂停一个执行I / O操作的线程,并能够以一种简单的方式恢复它 .

I / O操作基本上只是将4096字节的块写入文件,直到所有数据都写入其中 . 由于文件可能很大并且需要很长时间,我希望能够暂停操作(以防它开始吃掉很多系统资源) .

我的代码,VB.NET版本:

'Class level.

Private BytesWritten As Long = 0

Private Pause As Boolean = False

'Method (thread) level.

While BytesWritten < [target file size]

...write 4096 byte buffer to file...

While Pause = True

Thread.Sleep(250)

End While

...do some more stuff...

End While

C#等价物:

//Class level.

long bytesWritten = 0;

bool pause = false;

//Method (thread) level.

while(bytesWritten < [target file size]) {

...write 4096 byte buffer to file...

while(pause == true) {

Thread.Sleep(250);

}

...do some more stuff...

}

我听说过ResetEvents,我对他们的所作所为有所了解,但我从未真正了解过它们 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值