学习,享受他的快乐,才不会成为一种苦恼拖累。
随手写写,记录自己的点滴进步。才会变得更有动力。
今天学习了一下java的线程。看到这个名字很随意,自然的就想到了进程。因为在windows中进程很容易见到。每当某个程序没有响应后,我们都会很自然的打开资源管理器,结束任务,结束不了的就要去进程中结束进程。这样就可以将它关闭了。
而线程在我的理解中他是进程的一部分,或者说进程是一名长官,而线程是长官手下的兵。战斗时要保证长官活着。长官挂了,士兵也应该死光了吧(个人想法)。进程被杀死了,他下面的线程也应该over了。当然也存在例外,不介绍,自己都感觉还没学会,搞不清。
对了,还有线程是并不是同时进行的。所谓的同时仅仅是一种感官的错觉。他们也是排队滴。至于谁先来,我现在的理解,加感觉是:看人品。。。或许以后理解多了会有不同的看法吧。他们谁人品好,谁抢到了cpu,哪么他就运行喽。
java中的线程:
java.long.Thread类 和 java.long.Runnable接口
学习嘛,看文档呗。
java.long.Thread类实现了java.long.Runnable接口
java.long.Runnable中只存在一个方法:
public abstract void run();
使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run方法。
在Thread类中 run方法是这么写的
如果该线程使用了独立的Runnable 运行对象构造的,则调用该Runnable 对象的run方法;否则,该方法不执行任何操作并返回。
Thread的子类应该重写此方法。
个人没有很弄明白这东西到底嘛意思。。。。。没法子看源码呗:
Thread中run方法:
public void run(){
if(target !=null){
target.run();
}
}
target是Runnable对象,target the object whose run() method gets called。
尝试翻译下,不对的话就当笑话看吧。run()方法调用的target对象。
说实话还是没懂run()方法到底怎么用。现在需要一个例子。
好吧。在api中我没找到。。。求助一下google
ok,引用一下别人写的喽:
run()方法只是类的一个普通方法,如果直接调用run()方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等run()方法体执行完毕后才可执行下面的代码,这样就没有达到写线程的目的。
把需要并处理的代码放在run()方法中,start()方法启动线程将自动调用run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。
ps:以上引用地址:http://software.intel.com/zh-cn/blogs/2010/09/15/start-run
ok问题解决。顺带着将start()方法也解决了下。
写到这吧。搜段代码来练练手。
顺带着还可以看看别人对线程的理解。