多线程:
在很多场景下都要考虑的问题
如在编码的时候:一个供多线程访问的类中,成员变量是不能随便定义的。
如:在sun 的jdk中,SimpDataForamt 在做转换时,如果有多线程同时访问一个对象就会报错。
ipworkszip.Zip 开源的zip 解压压缩工具,这个工具非常的好用 只用三句代码就可以压缩文件,二句就可以解压文件。 真的很方便,
但是:这个工具它不支持多线程并发的访问。可以通过测试来验证:
test code:
import ipworkszip.Zip;
public class TestIpWork
{
public void test1(String filePaht, String workDirPaht) throws Exception
{
Zip zip = new Zip();
zip.setArchiveFile(filePaht);
zip.setExtractToPath(workDirPaht);
zip.extractAll();
}
public static void main(String[] args) throws Exception
{
for (int i = 0; i < 20; i++)
{
final int j = i;
new Thread(new Runnable()
{
@Override
public void run()
{
try
{
TestIpWork test = new TestIpWork();
test.test1("a" + j + ".zip", "test/" + j + "/");
Thread.sleep(100);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}).start();
}
}
}
在很多场景下都要考虑的问题
如在编码的时候:一个供多线程访问的类中,成员变量是不能随便定义的。
如:在sun 的jdk中,SimpDataForamt 在做转换时,如果有多线程同时访问一个对象就会报错。
ipworkszip.Zip 开源的zip 解压压缩工具,这个工具非常的好用 只用三句代码就可以压缩文件,二句就可以解压文件。 真的很方便,
但是:这个工具它不支持多线程并发的访问。可以通过测试来验证:
test code:
import ipworkszip.Zip;
public class TestIpWork
{
public void test1(String filePaht, String workDirPaht) throws Exception
{
Zip zip = new Zip();
zip.setArchiveFile(filePaht);
zip.setExtractToPath(workDirPaht);
zip.extractAll();
}
public static void main(String[] args) throws Exception
{
for (int i = 0; i < 20; i++)
{
final int j = i;
new Thread(new Runnable()
{
@Override
public void run()
{
try
{
TestIpWork test = new TestIpWork();
test.test1("a" + j + ".zip", "test/" + j + "/");
Thread.sleep(100);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}).start();
}
}
}

本文探讨了多线程环境下类成员变量的定义问题,并通过SimpDataForamt与Ipworkszip.Zip工具的具体案例说明了多线程并发访问可能导致的问题。Ipworkszip.Zip虽然提供了便捷的文件压缩与解压功能,但并不支持多线程并发访问。
1万+

被折叠的 条评论
为什么被折叠?



