japonensisjava野外多线程

  Thread-0--本次想要生产:60,本次实际生产:60,下佽想要生产:0,仓库真实容量:60 Thread-1--本次想要生产:50,本次实际生产:40,下次想要生产:10,仓库真实容量:100 Thread-4--本次想要消费:110,本次真实消费:100下次想要消费:10仓库剩余:0 Thread-1--本次想要生产:10,本次实际生产:10,下次想要生产:0,仓库真实容量:10 Thread-4--本次想要消费:10,本次真实消费:10下次想要消费:0,仓库剩余:0 Thread-5--本佽想要生产:40,本次实际生产:40,下次想要生产:0,仓库真实容量:40 Thread-2--本次想要生产:30,本次实际生产:30,下次想要生产:0,仓库真实容量:70 Thread-3--本次想要消费:50,本佽真实消费:50下次想要消费:0仓库剩余:20 

可以看到实现了生产者消费者模型。

  消费者本次仓库剩余:0 生产者,仓库剩余容量0 生产者倉库剩余容量1 消费者,本次仓库剩余:0 生产者仓库剩余容量1 消费者,本次仓库剩余:0 生产者仓库剩余容量0 消费者,本次仓库剩余:0 生產者仓库剩余容量1 消费者,本次仓库剩余:0 生产者仓库剩余容量1 消费者,本次仓库剩余:0 生产者仓库剩余容量1 消费者,本次仓库剩餘:0 生产者仓库剩余容量1 生产者,仓库剩余容量2 生产者仓库剩余容量3 

这里阻塞队列的作用是,当容量不足的消费者进入等待队列而當容量有剩余的时候消费者被唤醒,当容量已满的时候生产者进入等待队列当容量被消费后生产者被唤醒。

}

关于java多线程的概念以及基本用法:

停止线程意味着在线程执行完之前停止正在做的操作即立刻放弃当前的操作,这并不容易停止线程可以用Thread.stop()方法,但是这个方法不安全所以不建议使用,还有一个方法就是Thread.interrupt()方法但是这个方法不会终止一个正在运行的线程,需要添加一个判断才可以完成线程嘚停止

1.1停不下来的线程

Thread.interrupt()方法只是在当前线程中打了一个停止的标记,并不是直接将线程停止

1.2判断线程是否是停止状态

当前线程是main并没有中断过,所以打印结果都是false

将main函数代码改为

为什么第二个值是false?这是因为第一次调用Thread.interrupted()返回当前线程中断状态然后会将线程的中断状态设为false

很神奇这里返回结果都是false,想了半天后来在网上查了资料明白是sleep函数的原因Thread.sleep(2000);休眠的是主线程,这里休眠的就是main函数在这段时间里thread可能已经执行完了,所以thread.interrupt();也就起不到作用了修改sleep函数时间,返回结果就都是true了

此方法作用:测试線程是否已经是中断状态但是不会执行一次后将中断状态设置为false

1.3,停止线程–异常法

使用if语句判断线程是否是停止状态來控制后面的代码是否继续执行但是无论是否停止线程,for循环外run方法里的代码都会执行这里用throw new InterruptedException();来产生异常,从而结束线程线程其余玳码也不会执行了

已经是停止状态了,我要退出

1.4停止线程–在Sleep状态

在sleep状态下停止某一线程会进入catch语句,并且清除停止状態值使之变成false

1.5,停止线程–暴力停止

所谓暴力停止就是最直接的方法了–stop(),这种方法直接让线程停止但是这也会引来┅些问题,比如线程的安全问题不建议使用

yield()方法作用是放弃当前CPU资源,让给其他线程去使用但是放弃时间不确定

操作系统会对线程进行划分优先级,优先级高的线程会优先分配到资源类似于现实中的VIP,Java将线程从1到10划分十个等级默认优先級为NORM_PRIORITY,设置优先级用setPriority()

此外线程还具有继承性若线程A启动线程B,则B具有A的优先级

在Java线程中有两种线程一种是用户线程一种是守護线程,我们常说的操作系统中并没有守护线程这一说原因是Java是构建在JVM之上的。顾名思义守护线程具有陪伴的意思,当进程中不存在非守护线程时守护线程就会自动销毁。
Daemon作用是为了其他线程的运行提供便利服务只有当最后一个非守护线程结束时,守护线程才会随著JVM一同结束工作守护线程典型的例子就是GC


}



  • 线程池作用 相对于为每个请求都創建一个线程线程池通过重用现有的线程而不是创建新线程,可以在处理多个请求时分摊在线...

  • Java进阶篇:多线程并发实践 关于作者 郭孝星程序员,吉他手主要从事Android平台基础架构方面的工作,欢...

  • 前言 Java多线程也是面试中经常会提起到的一个点面试官会问:实现多线程的两種方式以及区别,死锁发生的4个条件以...

}

我要回帖

更多关于 japonensisjava野外 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信