2个简单问题,问题1不用看完代码,直接看注释。
import java.nio.channels.*;
import java.util.concurrent.*;
import java.io.*;public class FileLocking {
public static void main(String[] args) throws Exception {
FileOutputStream fos= new FileOutputStream("file.txt");
FileLock fl = fos.getChannel().tryLock();
if(fl != null) {
System.out.println("Locked File");
TimeUnit.MILLISECONDS.sleep(100); //问题1:这句代码不是很明白,JDK的解释看不大明白。
fl.release();
System.out.println("Released Lock");
}
fos.close();
}
}问题2:
128MB 用16进制为什么是 0X8FFFFFF ? 我是这么想的,1024 = 1MB ,1024*128 = 131072 再用计算机转出16进制表示等于 20000
import java.nio.channels.*;
import java.util.concurrent.*;
import java.io.*;public class FileLocking {
public static void main(String[] args) throws Exception {
FileOutputStream fos= new FileOutputStream("file.txt");
FileLock fl = fos.getChannel().tryLock();
if(fl != null) {
System.out.println("Locked File");
TimeUnit.MILLISECONDS.sleep(100); //问题1:这句代码不是很明白,JDK的解释看不大明白。
fl.release();
System.out.println("Released Lock");
}
fos.close();
}
}问题2:
128MB 用16进制为什么是 0X8FFFFFF ? 我是这么想的,1024 = 1MB ,1024*128 = 131072 再用计算机转出16进制表示等于 20000
1mb=1024k不是1mb=1024字节
128m=128*1024*1024
另外,不是1024 = 1MB 而是1024B=1KB 1024KB=1MB 1024MB=1GB