-
class Thread
interface Runnable
function run()
查看全部 -
Thread常用方法
查看全部 -
java并发学习
查看全部 -
互斥实现:
private finall Object lockObj=new Object();
synchronized(lockObj){}
同步实现:
lockObj.wait();
lockObj.notifyAll();
lockObj.notify();
查看全部 -
同步:通信机制
private final Object lockObj=new Object();//锁
synchronized(lockObj){
lockObj.wait();//保证条件不满足时任务都会被条件阻挡,而不会继续竞争处理器资源,把当前对象置于等待集合中waitset
lockObj.notifyAll();//唤醒所有在等待的线程
需要互斥的关键代码
}
查看全部 -
interrupt中断线程
isInterrupted返回值为bool的实例方法,Interrupted返回值为bool的静态方法,返回中断状态
调用interrupt方法只会改变中断状态
当线程由于调用了某些方法(sleep)之后进入了一种阻塞状态,再调用interrupt方法会产生中断状态被清除并且方法(sleep)会报interruptedException异常
查看全部 -
使用退出标志keeprunning
查看全部 -
自带的stop方法直接结束线程,不会有过渡
查看全部 -
等待调用join方法的线程执行完毕之后再执行下一步
MrChen.join()
查看全部 -
volatile 保证了线程可以正确读取其他线程写入的值
volatile boolean keeprunning=true;
Thread.yield();//让出处理器时间
ArmyRunnable armyTaskOfSuiAynasty=new ArmyRunnable();
//runnable接口的实现类的对象实例1
ArmyRunnable armyTaskOfRevolt=new ArmyRunnable();
//runnable接口的实现类的对象实例2
Thread armyTaskOfSuiAynasty=new Thread(armyTaskOfSuiAynasty,"隋军");
//使用runnable接口(的实现类的对象实例1)创建线程
查看全部 -
线程类extends Thread
public void run(){
getName()//获得线程名称
Thread.sleep(1000);
}
Thread actor=new Actor();
actor.setName("Mr.Thread");//设置线程名称
actor.start();
runnable接口implements runnable
@Override
public void run(){
本身没有getName方法
Thread.currentThread().getName()
}
Thread actressThread=new Thread(new Actress(),"msrunnable");
actressThread.start();
查看全部 -
java对线程的支持:lang包
thread类
runnable接口
查看全部 -
进程是程序的执行过程,是动态的,持有资源(内存,文件)和线程,双击运行一个程序既是一个进程
线程是系统中最小的执行单元,同一个进程有多个线程,多个线程共享进程的资源
线程交互的方式:互斥 ,同步
互斥:竞争,同一资源在一段时间只能被某一线程使用
同步:协作
查看全部 -
1:线程的互斥是指,关键数据在同一时间只能有一个线程访问
2:线程互斥的实现有synchronized关键字来实现,类似于给对应的代码加锁,只有获得锁的线程才能运行此段代码
3:线程的同步是指,线程间的一种通信控制,一个线程完成了某事后唤醒其他因某些资源不足而等待的线程
4:线程同步的实现有wait()(会释放所资源,然后进入锁对象上的wait set),notify()(会唤醒所对象的wait set中的一个线程),notifyall()(会唤醒所对象的wait set中的所有线程)这几个方法来实现,这几个方法都是属于object
查看全部 -
1、一个线程告诉其他线程某些消息----通信。
2、多个线程不能同时使用某个资源----互斥。
3、synchronized锁定互斥资源。
4、while(energyBoxes[from]<amount){lockObj.wait();}
while循环保证条件不满足时,线程不会一直去请求锁,提高系统性能,它会在Wait Set中等待
5、lockObj.notifyAll();唤醒所有等待资源的线程。等待池的对象是不会竞争锁的,当notifyAll后,等待池中的线程会被唤醒进入到该线程的锁池中重新竞争对象锁,重新获得锁后的对象会从wait后继续执行代码,其他对象会被阻塞,而不是wait。被阻塞的对象会等待下一次被唤醒(notify、notifyAll)。另外,notify不是线程安全的,notifyAll才是。
6.同步:wait()+notify() 方法。
查看全部
举报