JAVA 线程需要实现Thread的run方法,与C#不现在于,C#可以定义一个类作为线程序的执行类,在
创建线程时需要指定要运行那个方法 如:new ThreadStart(piRead.doWork);这也类似于java中实
现Runnable接口。
在java 中线程分为守护线程和用户线程。
- 守护线程也就是后台线程,需要调要setDaemon(true);使其成为守护线程,当然是要执行Thread.start()之前调用,否则会抛出IllegalThreadStateException非法线程状态异常,守护线程的特点是会随着创建它的线程的结束而消亡。由守护线程创建的线程默认为守护线程。
- 用户线程,它不依赖于创建它的线程,创建它的线程结束它仍能继续运行。
通常运行有限的线程定义为用户线程。而无限运行的线程定义为守护线程。如服务监听守
护线程。
线程的同步处理是为了几个线程同时访问同一资源时,在任何时刻只能有一个线程可以访问
该资源。线程的同步处理有两种方式:
- 可以在方法层次上管理代码 同步的方法
如 synchronized public void method(){} 使方法互斥 -
可以在块层次上管理代码 采用同步的代码块
synchronized(object obj)
{
...
}
同步的代码块更容易解决同步问题,而且也能解决多线程访问资源的问题的,不致于因锁定一个对象,而致使其它资源不能为其它线程访问。
- 可以在方法层次上管理代码 同步的方法