- 浏览: 6320 次
- 性别:
- 来自: 北京
最新评论
文章列表
:begin
@echo off
echo checking ....
for /f "skip=7 tokens=2* delims=(%%" %%a in ('ping -n 2 IP') do (
echo %%a %% lost
if "%%a"=="100" goto lost
)
goto begin
:lost
ipconfig /release *大网*
ipconfig /renew *大网*
goto begin
前面讲了wait/notify机制,Thread还有一个sleep()静态方法,它也能使线程暂停一段时间。sleep与wait的不同点是:sleep并不释放锁,并且sleep的暂停和wait暂停是不一样的。obj.wait会使线程进入obj对象的等待集合中并等待唤醒。
但是wait()和sleep()都可以通过interrupt()方法打断线程的暂停状态,从而使线程立刻抛出InterruptedException。
如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出Interrup ...
通常,多线程之间需要协调工作。例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程downloadThread将该图片下载完毕。如果图片还没有下载完,displayThread可以暂停,当downloadThread完成了任务后,再通知displayThread“图片准备完毕,可以显示了”,这时,displayThread继续执行。
以上逻辑简单的说就是:如果条件不满足,则等待。当条件满足时,等待该条件的线程将被唤醒。在Java中,这个机制的实现依赖于wait/notify。等待机制与锁机制是密切关联的。例如:
synchronized(obj) ...
多线程同步的实现最终依赖锁机制。我们可以想象某一共享资源是一间屋子,每个人都是一个线程。当A希望进入房间时,他必须获得门锁,一旦A获得门锁,他进去后就立刻将门锁上,于是B,C,D...就不得不在门外等待,直到A释放锁出来后,B,C,D...中的某一人抢到了该锁(具体抢法依赖于JVM的实现,可以先到先得,也可以随机挑选),然后进屋又将门锁上。这样,任一时刻最多有一人在屋内(使用共享资源)。
Java语言规范内置了对多线程的支持。对于Java程序来说,每一个对象实例都有一把“锁”,一旦某个线程获得了该锁,别的线程如果希望获得该锁,只能等待这个线程释放锁之后。获得锁的方法只有一个,就是synchron ...
java多线程设计模式(2) 线程的同步
- 博客分类:
- java多线程
java多线程设计模式(2) 线程的同步
作者:xuefeng 文章来源:本站原创 点击数:646 更新时间:2005-9-23
【字体:小 大】
--------------------------------------------------------------------------------
如果您有任何疑问,请到开发论坛上提问。
--------------------------------------------------------------------------------
由于同一进程内的多个线程共享内存空间,在Java中,就是共享实例, ...
作者:xuefeng 文章来源:本站原创 点击数:669 更新时间:2005-9-23
【字体:小 大】
--------------------------------------------------------------------------------
如果您有任何疑问,请到开发论坛上提问。
--------------------------------------------------------------------------------
java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run ...
/** 通过字符IO进行文件读写 */
FileReader reader = null;
FileWriter writer = null;
char[] charArr = new char[512];
try
{
reader = new FileReader(srcFilePathName);
writer = new FileWriter(targetFilePathName);
start = System.currentTimeMi ...
/** 通过IO进行批量读写 */
byte[] array = new byte[512];
FileInputStream fin3 = null;
FileOutputStream fout3 = null;
try
{
fin3 = new FileInputStream(srcFilePathName);
fout3 = new FileOutputStream(targetFilePathName);
start = Sys ...
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio ...
/**
* simple introduction FTP文件下载
* <p>
* detailed comment FTP文件下载 notice: 之所以每次都要连接一次ftp是让它的目录重新返回到相对的根目录,
* 如果复用上次的FtpClient则可能它当前在FTP的目录不是我们想要的 目录,所以在FTP上传下载文件时,最好每次都重新登录一下FTP
* @author 2011-3-11
* @see
* @since DPI V200R002
*/