关于进程、线程的学习分享
1,进程概念:
程序(或任务)的执行过程(动态性),持有资源(共享内存、共享文件)和线程。(资源或者说线程的载体)
2,Thread的常用方法:
类别 方法 简介
Thread()
Thread(String name)
线程的创建 Thread(Runnable target)
Thread(Runnable target,String name)
==================================================================
void start() 启动线程
static void sleep(long milis) 线程休眠
线程的方法 void join() 使其他线程等待当前线程终止
void join(long miles)
void join(long milis,int nanos)
static void yield() 当前运行线程释放处理器资源
==================================================================
获取线程引用 static Thread currentThread() 返回当前运行的线程引用
3,争用条件:Race Condition
当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏,这种现象称为争用条件。
4,线程的交互:互斥与同步
加锁:锁对象,是java的一个Object对象,实现互斥是使用synchronized(lockObj)关键字。
//使用while循环,保证条件不满足时任务都会被条件阻挡,而不是继续竞争CPU资源。
while(energyBox(from) < amount){
try{
lockObj.wait();
}catch(Exception e){
}
}
lockObj.notifyAll(); //唤醒所有在lockObj对象上等待的线程,实现线程的同步;
5,互斥与同步的实现:
互斥:synchronized(lockObj);java保证了同一时间只能有一个线程获得lockObj;
同步:wait()/notify()/notifyAll()