大数据-Java线程篇
长风yaya
这个作者很懒,什么都没留下…
展开
-
7.线程通信方法的使用
本题以两个线程交替打印1-100个数为例说明线程通信涉及到的三个方法wait()notify()notifyAll()三个方法的作用wait(): 执行此方法后,当前线程就会进入阻塞状态,并释放同步监视器notify(): 执行此方法后,就会唤醒wait的一个线程。如果有多个线程被wait,就唤醒优先级高的notifyAll():执行此方法后,就会唤醒所有被wait的线程方法的使用说明wait()、notify()、notifyAll()三个方法必须使用在同步代码块或同步方法中w原创 2020-11-30 19:59:08 · 76 阅读 · 0 评论 -
6.生产者消费者问题的Java实现
问题说明生产者(Producer)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品,店员一次只能持有固定数量的产品(比如:50),如果生产者试图生产更多的产品,店员会叫生产者停一下,如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品了,店员会告诉消费者等一下,如果店中有产品了再通知消费者来取走产品。问题分析1)生产者和消费者是两个线程。采用继承Thread类的方式创建这两个线程2)店员(或产品)为共享数据。3)存在线程安全问题。采用定义同步方法的方式处理4)原创 2020-11-30 19:44:55 · 119 阅读 · 0 评论 -
通过实现Runnable接口的方式创建线程
多线程的创建,方式二:实现Runnable接口//1.创建一个实现了Runnable接口的类class MThread implements Runnable{ @Override //2.实现类去实现Runnable中的抽象方法:run() public void run() { for (int i = 0; i < 100; i++) { if(i % 2 == 0){ System.out.pr原创 2020-11-30 18:17:58 · 1484 阅读 · 0 评论 -
通过继承Thread 类的方式创建线程
多线程的创建,方式一:继承于Thread 类//1.创建一个继承于Thread类的子类class MyThread extends Thread { //2.重写Thread类的run 方法---->将此线程执行的操作声明在run()中 @Override public void run() { for (int i = 0; i < 100; i++) { if (i % 2 == 0) {原创 2020-11-30 18:04:59 · 2186 阅读 · 0 评论 -
1.使用同步代码块的方式解决Runnable的线程安全问题
使用同步代码块的方式解决Runnable接口的线程安全问题class Window1 implements Runnable { private static int tickets = 100; Object obj = new Object(); @Override public void run() { while (true) { synchronized(this){ //此时的this:唯原创 2020-11-30 16:21:39 · 255 阅读 · 0 评论 -
2.使用同步代码块的方式解决Thread类的线程安全问题
使用同步代码块的方式解决Thread类的线程安全问题class windows2 extends Thread { public static int ticket = 100; public static Object obj = new Object(); @Override public void run() { while (true) { // synchronized(windows2.class){原创 2020-11-30 16:06:27 · 93 阅读 · 0 评论 -
3.使用同步方法解决实现Runnable接口的线程安全问题
使用同步方法解决实现Runnable接口的线程安全问题class windows3 implements Runnable { public int tickets = 100; @Override public void run() { while (true) { show(); } } private synchronized void show(){ //同步监视器:this原创 2020-11-30 16:42:54 · 238 阅读 · 0 评论