发表于: 2018-01-18 23:16:32
3 599
今天完成的事情:
1. 完成3个接口
查看教材详情
2. 小课堂
明天计划的事情
1.课时列表,添加课时接口
2. 判空Util
遇到的问题:
无
收获:
1.
方法1 : start()
start( )方法是同步的,并且是启动这个线程进行执行,Java虚拟机将会调用这个线程的run方法,这样产生的结果是,两个线程执行着,其中一个是调用start()方法的线程执行,另一个线程是执行run方法的线程。在start()方法中,首先进行的成状态的判断,如果是一个JVM新启动的线程,那么threadStatus
的状态是为0的,如果线程不为0 将报出异常, 然后将线程添加到group
中, group.add(this)
方法中执行的结果是,通知group, 这个线程要执行了,所以可以添加进group中,并且这个线程组中没有没有启动的数量将减少。然后设置标识为, 接着调用本地方法started0
,如果没有启动成功,将会通知这个线程组,没有启动成功,捕捉的异常将会忽略
2. join()方法
join方法是等待该线程执行,直到超时或者终止,可以作为线程通信的一种方式,A线程调用B线程的join(阻塞),等待B完成后再往下执行。
3. start0( ) 一个本地方法,通过他来判断
1 private native void start0();
这里使用了本地调用,通过C代码初始化线程需要的系统资源。可见,线程底层的实现是通过C代码去完成的。
2. 通过反射来获取Object的值,以此来进行数据的操作
public void obsd () throws Exception{
Book book = new Book();
book.setId(1L);
book.setSequence(1);
book.setUpdateBy(1215455555L);
book.setPicture("55454545");
book.setGrade(1);
book.setVersion("45545");
book.setName("5665");
Object o = book;
Class clazz = o.getClass();
Method m1 = clazz.getDeclaredMethod("getId");
Method m2 = clazz.getDeclaredMethod("getSequence");
Method m3 = clazz.getDeclaredMethod("getUpdateBy");
Method m4 = clazz.getDeclaredMethod("getPicture");
Object mm1 = m1.invoke(o);
Object mm2 = m2.invoke(o);
Object mm3 = m3.invoke(o);
Object mm4 = m4.invoke(o);
System.out.println(mm1.toString());
System.out.println(mm2.toString());
System.out.println(mm3.toString());
System.out.println(mm4.toString());
任务进度:课时列表,添加课时接口
预计完成时间:1.19
DOME时间:2018-2-9
评论