多线程

【基于过程和基于线程的区别】

过程:多个程序  如GUI 

线程:一个程序共享变量,同一个程序的不同部分, 如servelet

每个线程可以独立、同时运行

 

【实现多线程的方法】

ruunable 具体对象要有start方法+run方法

 

线程睡眠

语句:,指定时间单位后睡眠(

 

 

可能会throw 

 

maxpriority只是倾向于lean to,不是绝对优先 

启动子线程时,其优先级设置为等于父线程的优先级
优先级:MIN_PRIORITY,NORM_PRIORITY,MAX_PRIORITY(分别设置为1,5和10)
Thread类的方法
setpriority(int p)
getpriority()

 

【线程同步】

 

控制多个进程访问的共同资源(When the method is invoked, its object will be locked): 用synchronized关键字来同步方法和变量:类似于开锁和解锁

所有object的内部锁:

途径:关键字、内部方法 

【collections集合】

Q的方要向队列添加元素(也就是入队):q.offer(element)//当q已满时返回false

要从队列中删除元素(也就是dequeue):q.poll(element)//当q为空时返回false
如果你想在轮询之前检查:q.peek()//返回元素而不删除
替代方式
q.add(element)//当q满时抛出异常**
q.remove(element)//当q为空时抛出异常**
q.element()//当q为空时抛出异常**



LinkedList和ArrayDequeu不是线程安全的,需要在多线程环境中进行同步。

线程安全的集合类位于java.util.concurrent中。

 生产者消费者模型:

Qseatter生产者 push, Hotseat消费者 poll

Q在使用的任何时候都需要被locked

原文地址:https://www.cnblogs.com/immiao0319/p/9950135.html