java线程解析文档格式.docx
《java线程解析文档格式.docx》由会员分享,可在线阅读,更多相关《java线程解析文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
4.创建Thread对象,并且把Runnable实现类的对象作为参数传递。
5.调用Thread对象的start方法开启线程。
线程安全问题的解决方案:
线程安全问题出现的根本原因:
1.必须要存在两个或者两个以上的线程共享着一个资源。
2.操作共享资源的代码必须有两句或者两句以上。
1.同步代码块
synchronized(锁){
需要被同步的代码
}
2.同步函数。
修饰符synchronized返回值类型函数名(形参列表..){
注意:
1.同步代码块的锁可以是任意的对象。
同步函数的锁是固定的,非静态函数的锁对象是this对象。
静态函数的锁对象是class对象。
2.锁对象必须是多线程共享的对象,否则锁不住。
3.在同步代码块或者是同步函数中调用sleep方法是不会释放锁对象的,如果是调用了wait方法是会释放锁对象的。
*/
publicclassDemo1extendsThread{
publicDemo1(Stringname){
super(name);
}
@Override
publicvoidrun(){
for(inti=0;
i<
100;
i++){
System.out.println(Thread.currentThread().getName()+"
:
"
+i);
publicstaticvoidmain(String[]args){
Demo1d=newDemo1("
狗娃"
);
d.start();
//开启线程。
线程一旦开启就会指定run方法中的代码。
}
输出
main:
狗娃:
1
2
3
4
5
6
7
8
9
10
Junit单元测试框架
packagecn.itcsat.junit;
importstaticorg.junit.Assert.*;
importjava.util.Arrays;
importjavax.management.RuntimeErrorException;
importorg.junit.Test;
junit(单元测试框架)
目前存在的问题:
1.目前的方法如果需要测试,都需要在main方法上调用。
2.目前的结果都需要我们人工对比。
junit要注意的细节:
1.如果使用junit测试一个方法的时候,在junit窗口上显示绿条那么代表测试正确,
如果是出现了红条,则代表该方法测试出现了异常不通过。
2.如果点击方法名、类名、包名、工程名运行junit分别测试的是对应的方法,类、包中的所有类的test方法,工程中的所有test方法。
3.@Test测试的方法不能是static修饰与不能带有形参。
4.如果测试一个方法的时候需要准备测试的环境或者是清理测试的环境,那么可以@Before、@After、@BeforeClass、@AfterClass这四个注解。
@Before、@After是在每个测试方法测试的时候都会调用一次,@BeforeClass、@AfterClass是在所有的测试方法测试之前与测试之后调用一次而已。
junit使用规范:
1.一个类如果需要测试,那么该类就应该对应着一个测试类,测试类的命名规范:
被测试类的类名+Test.
2.一个被测试的方法一般对应着一个测试的方法,测试的方法的命名规范是:
test+被测试的方法的方法名
publicclassDemo1{
@Test//注解
publicvoidgetMax(inta,intb){
/*inta=3;
intb=5;
*/
intmax=a>
b?
a:
b;
System.out.println("
最大值:
+max);
@Test
publicvoidsort(){
int[]arr={12,4,1,19};
i<
arr.length-1;
for(intj=i+1;
j<
arr.length;
j++){
if(arr[i]>
arr[j]){
inttemp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
数组的元素:
+Arrays.toString(arr));
测试环境
importjava.io.FileInputStream;
importjava.io.IOException;
importorg.junit.After;
importorg.junit.AfterClass;
importorg.junit.Before;
importorg.junit.BeforeClass;
publicclassDemo2{
//准备测试的环境
//@Before
@BeforeClass
publicstaticvoidbeforeRead(){
准备测试环境成功..."
//读取文件数据,把把文件数据都
publicvoidreadFile()throwsIOException{
FileInputStreamfileInputStream=newFileInputStream("
F:
\\a.txt"
intcontent=fileInputStream.read();
内容:
+content);
读取文件数据排序.."
//清理测试环境的方法
//@After
@AfterClass
publicstaticvoidafterRead(){
清理测试环境.."
Tool.java
publicclassTool{
publicstaticintgetMax(){
inta=3;
intb=5;
returnmax;
publicstaticintgetMin(){
intb=5;
intmin=a<
returnmin;
ToolTest.java
importjunit.framework.Assert;
//测试类
publicclassToolTest{
publicvoidtestGetMax(){
intmax=Tool.getMax();
if(max!
=5){
thrownewRuntimeException();
}else{
System.out.println("
+max);
//断言
//Assert.assertSame(5,max);
//expected期望actual真实==
//Assert.assertSame(newString("
abc"
),"
//Assert.assertEquals(newString("
//底层是使用Equals方法比较的
//Assert.assertNull("
aa"
//Assert.assertTrue(true);
publicvoidtestGetMin(){
intmin=Tool.getMin();
if(min!
=3){
最小值:
+min);