
JAVA-线程
godkzz
多多益善
展开
-
Java中最简单的死锁写法
前言:想要了解死锁和避免死锁,我们就需要知道死锁大概是怎么样写的 public class MyThread extends Thread { private final static Object lock1 = new Object(); private final static Object lock2 = new Object(); @Override public void run() { if ("a".equals(Thread.curr原创 2021-08-10 15:24:41 · 266 阅读 · 0 评论 -
JAVA中线程池的基本实现
1.创建一个类,实现Runnable接口,重写run方法 public class RunnableImpl implements Runnable { @Override public void run(){ for (int i = 0;i<20;i++) { System.out.println(Thread.currentThread().getName() +"执行次数:"+ i); } .原创 2021-08-04 22:38:32 · 95 阅读 · 0 评论 -
JAVA中线程之间的通信(生产者与消费者问题)
public class Main { public static void main(String[] args) { Object obj = new Object();//生成一个对象锁 //消费者线程 new Thread(){ @Override public void run(){ while (true) { .原创 2021-08-04 20:54:53 · 101 阅读 · 0 评论 -
JAVA中线程的六种状态与之间的关系
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有这六种线程状态: 1.NEW(新建):线程刚被创建,但是并未启动。还没调用start方法。 2.Runnable(可运行):线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统处理器。 3.Blocked(锁阻塞):当一个线程试图获取一个对象锁,而该对象锁被其它线程持有,则该线程进入Blocked状态;当该线程持有锁时,该线程将变成Runnable状态。 4.Wa原创 2021-08-04 20:17:59 · 220 阅读 · 0 评论 -
JAVA中多线程的锁
接https://blog.youkuaiyun.com/godkzz/article/details/119390742?spm=1001.2014.3001.5501 线程安全问题除了同步代码块,还可以用锁解决 1.创建ReentrantLock对象 2.在需要同步块前加上方法 lock() 加锁 3.在需要同步块后加上方法 unlock() 释放锁 public class RunnableImpl implements Runnable { private int ticket = 100.原创 2021-08-04 19:52:46 · 83 阅读 · 0 评论 -
JAVA中多线程的同步方法和静态同步方法
接https://blog.youkuaiyun.com/godkzz/article/details/119390742?spm=1001.2014.3001.5501 一、同步方法 线程安全问题除了同步代码块,还可以用同步方法解决 public class RunnableImpl implements Runnable { private int ticket = 100; @Override public void run() { while (true) .原创 2021-08-04 19:34:47 · 550 阅读 · 0 评论 -
JAVA中多线程的同步代码块
线程不安全案例之卖票问题 现在假设我们有100张票,分发给三个售票窗口去出售。 public class RunnableImpl implements Runnable { private int ticket = 100; @Override public void run() { while (true) { if (this.ticket > 0) {原创 2021-08-04 19:00:06 · 200 阅读 · 0 评论 -
Java中创建多线程的三种方法
目录 一、继承Thread类,重写run方法 1.准备一个普通的学生类 2.学生类继承Thread接口,并重写run方法 3.在Main方法中生成两个学生线程,并启动 4.输出结果 二、实现Runnable接口 1.准备一个普通的学生类 2.实现Runnable接口,重写run方法 3.在Main方法中,把学生类对象作为Thread对象的构造函数参数传入,并启动 4.输出结果 三、实现Callable接口 1.准备一个普通的学生类 2.实现Callable接口,重写call方法原创 2021-08-04 17:32:18 · 453 阅读 · 0 评论