关于多线程的一些新发现
2017-07-16 00:00
267 查看
平时写Java程序或者Java web 程序的时候,很少用到多线程,但是多线程却非常非常的重要,而我却没有机会,没有情景,也不到遇见什么业务逻辑去使用多线程,因此对多线程的理解一直停留在:
1、如何实现多线程?
2、调用star(),run()方法的区别?
3、怎么线程同步?
4、线程和进程区别?
等等基础的问题。
今天突然发现一个小细节,就是在线程通信的时候,使用 wait(),notify(),notifyAll()方法的时候,必须放在同步进程块中,如果不放入就会产生异常:java.lang.IllegalMonitorStateException
这是我第一次发现这个神奇的东西,曾经从来没有发现,或许是我没怎么用过吧。
测试代码1:
测试代码2:
main方法:
-------------------控制台输出:--------------
1、如何实现多线程?
2、调用star(),run()方法的区别?
3、怎么线程同步?
4、线程和进程区别?
等等基础的问题。
今天突然发现一个小细节,就是在线程通信的时候,使用 wait(),notify(),notifyAll()方法的时候,必须放在同步进程块中,如果不放入就会产生异常:java.lang.IllegalMonitorStateException
这是我第一次发现这个神奇的东西,曾经从来没有发现,或许是我没怎么用过吧。
测试代码1:
public class MyThread implements Runnable{ @Override public void run(){ try { this.wait(); System.out.println("11"); } catch (InterruptedException e) { e.printStackTrace(); } } }
测试代码2:
public class MyThread2 implements Runnable{ @Override public void run(){ this.notifyAll(); } }
main方法:
public class Mytest extends Thread{ public static void main(String[] args) { Runnable run1=new MyThread(); Runnable run2=new MyThread2(); Thread t1=new Thread(run1); Thread t2=new Thread(run2); t1.start(); try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } t2.start(); } }
-------------------控制台输出:--------------
相关文章推荐
- 这里跟其他朋友学的关于多线程加锁的一些建议。
- 关于异步更新UI界面多线程执行后台操作的一些思路整理
- 关于多线程的一些基础整理
- 关于多线程学习遇到的一些问题
- HDU 3371 Connect the Cities 最小生成树(和关于sort和qsort的一些小发现)
- 关于多线程安全的一些解决方法
- RandomAccessFile关于多线程的一些知识
- 发现的一些关于python的文章
- 关于多线程的一些细节
- 关于PowerBuilder多线程的一些心得
- 关于linux中多线程编程的一些初级问题
- 项目中发现的一些关于JavaScript中JSON的注意点
- Java中关于同步,异步,多线程,多线程同步,并发,并行的一些总结
- 关于二值化函数cvAdaptiveThreshold的一些发现
- 关于IOS一些有的没的 – IOS多线程
- 关于c++中的scanf函数中的一些不易发现的注意点
- 关于多线程的一些细节
- 关于二值化函数cvAdaptiveThreshold的一些发现
- 关于Spring整合发现的一些问题。
- 关于整个puppet的学习发现一些的问题