【基于过程和基于线程的区别】
过程:多个程序 如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