Java基础-多线程实现顺序执行
2017-03-06 16:27
531 查看
1.效果图:
2.代码:
//可以继承Thread重写run函数
public class MultipleThreadStudy extends Thread {
/*
MultipleThreadStudy(){}
MultipleThreadStudy(String name){
super(name);
}*/
//重写Thread的run函数
public void run(){
for(int i=0;i<10;i++)
{
System.out.print("MultipleThreadStudy:i="+i);
try
{
Thread.sleep((int)Math.random()*1000);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("");
}
}
//******************************************多线程*********************************************************
//不论是用继承的Thread方法还是用Runnable接口实现的方法,java里面的多个线程同时运行时,不是顺序执行,而是并行执行
//如果需要顺序执行,则需加判断前一个线程是否执行完毕
//如果要顺序执行,方法一:判断线程isAlive是否在运行中,不停循环直至结束
//方法二:调用join方法
//快捷键注释代码:Ctrl+Shift+/ (/* */ 形式的) 或 Ctrl+/ (// 形式的)
//快捷键取消注释:Ctrl+Shift+\ (/* */ 形式的) 或 Ctrl+/ (// 形式的)
public static void main(String[] args) {
//************继承Thread重写run函数的线程***************
MultipleThreadStudy thread1=new MultipleThreadStudy();
MultipleThreadStudy thread2=new MultipleThreadStudy();
MultipleThreadStudy thread3=new MultipleThreadStudy();
//thread1.setPriority(1); //设置优先级
//thread2.setPriority(2);
//thread3.setPriority(3);
System.out.println("............thread1 run...............");
thread1.start();
//方法一:判断线程isAlive是否在运行中,不停循环直至结束
while(thread1.isAlive())
{
try
{
Thread.sleep(100);
}
catch(Exception e)
{
e.printStackTrace();
}
}
System.out.println("............thread2 run...............");
thread2.start();
while(thread2.isAlive())
{
try
{
Thread.sleep(100);
}
catch(Exception e)
{
e.printStackTrace();
}
}
System.out.println("............thread3 run...............");
thread3.start();
while(thread3.isAlive())
{
try
{
Thread.sleep(100);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//************实现Runnable的接口方法run函数*************
Runnable rb1=new RunnableThread();
Runnable rb2=new RunnableThread();
Runnable rb3=new RunnableThread();
Thread runnableThread1=new Thread(rb1);//鼠标移到Thread,按alt+/的方式看需传的参数
Thread runnableThread2=new Thread(rb2);
Thread runnableThread3=new Thread(rb3);
System.out.println("...runnableThread1 run...");
runnableThread1.start();
//方法二:调用join方法
try
{
runnableThread1.join();
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("...runnableThread2 run...");
runnableThread2.start();
try
{
runnableThread2.join();
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("...runnableThread3 run...");
runnableThread3.start();
}
}
//可以实现Runnable的接口方法run函数
class RunnableThread implements Runnable{
public void run(){
for(int i=0;i<10;i++)
{
System.out.print("RunnableThread:i="+i);
try
{
Thread.sleep((int)Math.random()*1000);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("");
}
}
}
2.代码:
//可以继承Thread重写run函数
public class MultipleThreadStudy extends Thread {
/*
MultipleThreadStudy(){}
MultipleThreadStudy(String name){
super(name);
}*/
//重写Thread的run函数
public void run(){
for(int i=0;i<10;i++)
{
System.out.print("MultipleThreadStudy:i="+i);
try
{
Thread.sleep((int)Math.random()*1000);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("");
}
}
//******************************************多线程*********************************************************
//不论是用继承的Thread方法还是用Runnable接口实现的方法,java里面的多个线程同时运行时,不是顺序执行,而是并行执行
//如果需要顺序执行,则需加判断前一个线程是否执行完毕
//如果要顺序执行,方法一:判断线程isAlive是否在运行中,不停循环直至结束
//方法二:调用join方法
//快捷键注释代码:Ctrl+Shift+/ (/* */ 形式的) 或 Ctrl+/ (// 形式的)
//快捷键取消注释:Ctrl+Shift+\ (/* */ 形式的) 或 Ctrl+/ (// 形式的)
public static void main(String[] args) {
//************继承Thread重写run函数的线程***************
MultipleThreadStudy thread1=new MultipleThreadStudy();
MultipleThreadStudy thread2=new MultipleThreadStudy();
MultipleThreadStudy thread3=new MultipleThreadStudy();
//thread1.setPriority(1); //设置优先级
//thread2.setPriority(2);
//thread3.setPriority(3);
System.out.println("............thread1 run...............");
thread1.start();
//方法一:判断线程isAlive是否在运行中,不停循环直至结束
while(thread1.isAlive())
{
try
{
Thread.sleep(100);
}
catch(Exception e)
{
e.printStackTrace();
}
}
System.out.println("............thread2 run...............");
thread2.start();
while(thread2.isAlive())
{
try
{
Thread.sleep(100);
}
catch(Exception e)
{
e.printStackTrace();
}
}
System.out.println("............thread3 run...............");
thread3.start();
while(thread3.isAlive())
{
try
{
Thread.sleep(100);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//************实现Runnable的接口方法run函数*************
Runnable rb1=new RunnableThread();
Runnable rb2=new RunnableThread();
Runnable rb3=new RunnableThread();
Thread runnableThread1=new Thread(rb1);//鼠标移到Thread,按alt+/的方式看需传的参数
Thread runnableThread2=new Thread(rb2);
Thread runnableThread3=new Thread(rb3);
System.out.println("...runnableThread1 run...");
runnableThread1.start();
//方法二:调用join方法
try
{
runnableThread1.join();
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("...runnableThread2 run...");
runnableThread2.start();
try
{
runnableThread2.join();
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("...runnableThread3 run...");
runnableThread3.start();
}
}
//可以实现Runnable的接口方法run函数
class RunnableThread implements Runnable{
public void run(){
for(int i=0;i<10;i++)
{
System.out.print("RunnableThread:i="+i);
try
{
Thread.sleep((int)Math.random()*1000);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("");
}
}
}
相关文章推荐
- 复习基础-JAVA多线程,基于Condition实现子线程、主线程顺序处理
- Java 多线程 (PART XIX) 使用Condition实现线程的顺序执行
- Java多线程与并发应用-(11)-用Lock+Condition实现1,2,3 三个模块按顺序执行。
- java多线程-使用ReentrantLock实现线程的顺序执行
- java基础之:多线程实现/启动/状态+同步+线程池
- 【Java基础】多线程的实现
- 黑马程序员————java基础-----for嵌套循环的执行顺序
- Javaの线程之多线程执行顺序
- Javaの线程之多线程执行顺序
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- JAVA 基础笔记|多线程的实现方法
- 三、Java基础---------关于继承、构造函数、静态代码块执行顺序示例讲解
- 【Java基础】类的实例化、static、父类构造函数执行顺序
- 再学Java 基础(3)类与对象【构造函数以及其执行顺序----经典讲解】重点!!!
- java基础:代码块的执行顺序
- 【Java基础之finally和return】有return的情况下try catch finally的执行顺序
- 黑马程序员——java基础拾遗之多线程(一) 多线程的两种实现
- 黑马程序员:Java基础总结----java各代码块函数执行顺序
- java多线程实现主线程等待所有子线程执行完毕
- java多线程编码,顺序执行(同步)