java多线程相关知识点---持续更新...

1、线程和进程的区别:

  线程是资源分配的最小单位;进程是程序执行的最小单位。打开QQ就是开了一个进程,QQ里的各项功能就是一个个线程去执行;

2、Thread类的常见方法:

  Thread(Runnable target) :实例化时传入Runnable对象

  start();//启动线程

  getId();//获得线程ID

  getName();//获得线程名字

  getPriority();//获得优先权

  isAlive();//判断线程是否活动

  isDaemon();//判断是否守护线程

  getState();//获得线程状态

  sleep(long mill);//休眠线程

  join();//等待线程结束

  yield();//放弃cpu使用权利

  interrupt();//中断线程

  currentThread();//获得正在执行的线程对象

3、可以用什么手段来解决线程安全性问题:

  1、synchronized锁

  2、使用原子类操作:Atomic

  3、使用juc下的:concrruntHashMap

  4、Lock锁

4、Synchronized和Lock锁的区别:

  1、用法不同:

  synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象

  lock:一般使用ReentrantLock类做为锁。在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。

  2、性能不同:

  在资源竞争不是很激励的情况下,synchronized的性能要优于ReentrantLock,带在资源紧张很激烈的情况下,synchronized的性能会下降的很快,而ReentrantLock的性能基本保持不变。

  3、抄一下网上总结的:

  Synchronized是关键字,内置语言实现,Lock是接口。

  Synchronized在线程发生异常时会自动释放锁,因此不会发生异常死锁。Lock异常时不会自动释放锁,所以需要在finally中实现释放锁。

  Lock是可以中断锁,Synchronized是非中断锁,必须等待线程执行完成释放锁。

  Lock可以使用读锁提高多线程读效率。

  Lock:底层是CAS乐观锁,依赖AbstractQueuedSynchronizer类,把所有的请求线程构成一个CLH队列。而对该队列的操作均通过Lock-Free(CAS)操作

  Lock用代码玩玩(例子用的网上找的,自己敲一下看看执行情况):

public class LockTest {

public static void main(String[] args) {
Ticket ticket = new Ticket();
Thread firstThread = new Thread(ticket, "售票窗口A");
Thread secondThread = new Thread(ticket, "售票窗口B");
firstThread.setPriority(Thread.MIN_PRIORITY); //设置优先级
secondThread.setPriority(Thread.NORM_PRIORITY);

secondThread.start();
firstThread.start();
}

}
class Ticket implements Runnable{

private int ticketNumber = 100;

private Lock lock = new ReentrantLock();

@Override
public void run() {
while (true){
lock.lock();
try {
if (ticketNumber > 0) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "售票一张,现在还剩票数为:" + --ticketNumber);
}
} finally {
lock.unlock();
}
}
}
}

4、什么是AQS、ReentrantLock和ReentrantReadWriteLock锁:

  憋不住了。休息会,搞这些概念真的无聊,去敲代码实现以下。

 

posted @ 2020-04-17 17:10  水能载舟亦能喝  阅读(123)  评论(0编辑  收藏  举报