1. 当一个线程调用this.wait()操作时,必需有scynchronized(this)操作,得到当前的锁,
Wait()操作后,它自动弃锁,以便有notify()动作去唤醒它,
如果,没有scynchronized动作,程序会出错:
java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.notifyAll(Native Method)
2. 但是如果进程,同时又有其他的资源锁,那它不会放弃这个锁,此时,调用这
锁的类
都会处于等待状态。
For instance:
Class ->object c;
Class->object a;
Synchronized(c)
{
Synchronized(this)
{
Try{
This.wait();
}catch(InterruptedException e){}
}
}
//-------------------------------------------------------------------------------
在另一个class 里:
Class ->object b
Class ->object c(same to before c)
Synchronized(c)
{
Synchronized(a)
Try{
b.notifyall();
}catch(Exception e){}
}
这样第二个class就会处于关于class c的等待中。
3.多进程的调度,并不是一个一个进程的去创建,而是有一个进程就可以了,
例如:(这个多用于网络的服务器监听客户的连接时,要用的机制)
Class thread extends Thread{
Int a=1;
Public void run()
{
Int b=9;
While(true)
{
b++;
System.out.println(b);
}
}
}
}
4. 更多的时候,进程的应有是为了程序的并行性。。
当main 函数,在做一件事情,而同时,他要另一件事情,
这时候,就要用进程的概念了。。。