先来了解几个概念:
进程:正在运行的程序成为进程,不同进程之间有独立的内存空间.
线程:一个进程至少有一个线程,线程之间共享内存空间.java中的main方法,就是主线程 main trhead.
并行:两个或多个事件在同一时刻发生,成为并行
并发:两个或多个事件在极小的时间段(毫秒级)发生,成为并发.
java中Thread类及其子类才能成为线程,创建线程通常有两种方式:
1.继承Thread,并覆写run()方法
2.实现Runnable接口,并实现run方法.
设计多线程访问共享资源的时候,应该选择实现Runnable接口方式,否则选用继承方式。
//针对多线程并发访问共享资源出现的问题,有三种解决方案
//1.同步代码块
//2.同步方法
//3.锁机制
//下面演示第一种方法,同步代码块,也叫同步锁,互斥锁等名字
//使用synchronized关键字synchronized(mutex),mutex表示需要监听,加锁的资源.
//千万不能用synchronized修饰run方法,否则单个线程会把任务执行完,出现串行现象,多线程就没有意义了。解决方法是定义一个新的方法用synchronized,在run方法中调用。
同步锁,互斥锁,同步监听器,同步监听对象是同一个概念。对于synchronized,如果是实例方法,同步监听对象就是this
锁机制
1.import java.util.concurrent.locks.ReentrantLock;
ReentrantLock lock = new ReentrantLock();
//进入方法,立刻加锁
lock.lock();
try{
//逻辑代码
}finally{
lock.unlock();//释放同步锁
}
多线程的例子具体看我的博客文章:
https://blog.csdn.net/linchengshen_/article/details/80517498