Java线程---休眠问题来看并发执行
2017-08-12 10:33
148 查看
同一个进程中的3个线程是并发执行的,我们通过输出的时间点现象来看,线程的并发执行
最近突然越来感觉写博客似乎是一种很怡情的事情,可能是无聊,可能是心里面对现状的不满,希望通过学习改变自己,也只是希望,好了我们来进入正题。
休眠问题:
一句话 :Thread.sleep();
我们知道线程在操作系统中执行时并发执行的,那么我们来做个试验
上面的这个图片什么意思呢,我们可以看到71,出现了3次,而且我可以告诉 你我在控制台中看到的是三个71几乎是同时出现的,和前面的3个70之间隔了一秒
,我们来看程序:
package com.epoint.wdgtest;
public class WdgTest
{
//用休眠来看程序的并发执行
public static void main(String [] args){
Thread mt1=new myThread();
Thread mt2=new myThread();
Thread mt3=new myThread();
mt1.start();
mt2.start();
mt3.start();
}
}
class myThread extends Thread{
public void run(){
for(int i=0;i<2000;i++){
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.currentThread().getName()+"----"+i);
}
}
}三个71几乎同时出现意味着三个线程几乎同执行了输出语句,也就是说上面的休眠是几乎同时结束的,可见3个实现在同一个时间点进行了休眠,所以说线程之间是并发执行的。
最近突然越来感觉写博客似乎是一种很怡情的事情,可能是无聊,可能是心里面对现状的不满,希望通过学习改变自己,也只是希望,好了我们来进入正题。
休眠问题:
一句话 :Thread.sleep();
我们知道线程在操作系统中执行时并发执行的,那么我们来做个试验
上面的这个图片什么意思呢,我们可以看到71,出现了3次,而且我可以告诉 你我在控制台中看到的是三个71几乎是同时出现的,和前面的3个70之间隔了一秒
,我们来看程序:
package com.epoint.wdgtest;
public class WdgTest
{
//用休眠来看程序的并发执行
public static void main(String [] args){
Thread mt1=new myThread();
Thread mt2=new myThread();
Thread mt3=new myThread();
mt1.start();
mt2.start();
mt3.start();
}
}
class myThread extends Thread{
public void run(){
for(int i=0;i<2000;i++){
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.currentThread().getName()+"----"+i);
}
}
}三个71几乎同时出现意味着三个线程几乎同执行了输出语句,也就是说上面的休眠是几乎同时结束的,可见3个实现在同一个时间点进行了休眠,所以说线程之间是并发执行的。
相关文章推荐
- 【Java并发编程】之十二:线程间通信中notifyAll造成的早期通知问题(含代码)
- java线程怎样实现并发?从问题说开去。。。
- Java 中的守护(Daemon)线程中finally代码块是否执行的问题
- Top 50 Java 线程并发的面试问题
- Java并发:三种线程抽象以及线程执行
- java并发(一) CountDownLatch (在多个线程都结束后再去执行某个任务)
- java并发---三线程打印ABC的问题
- Java面试题--多线程、并发及线程的基础问题
- 【Java并发编程】之十二:线程间通信中notifyAll造成的早期通知问题(含代码)
- JAVA 并发编程- Spring 并发访问的线程安全性问题
- Java并发(1) i++的线程安全问题
- 线程并发执行带来的问题
- 【java并发】线程技术之死锁问题
- java并发系列:一线程常见问题
- 【Java并发编程】之十二:线程间通信中notifyAll造成的早期通知问题(含代码)
- 并发问题和主线程等待所有子线程运行完毕再执行
- 聊聊高并发(十二)分析java.util.concurrent.atomic.AtomicStampedReference源码来看如何解决CAS的ABA问题
- Java并发:等待事件发生后所有线程继续执行
- java并发实战--java线程的带来的问题
- 【Java并发编程】之十二:线程间通信中notifyAll造成的早期通知问题(含代码)