Java- 简单了解线程 线程创建和联合线程(一)
2012-09-08 20:15
465 查看
简单的了解一下JAVA的多线程后,觉的C#好像做的更好,C#通过委托的方式来实现多线程,当然JAVA实现多线程也很方便,但还是觉的C#做的更好。那么什么是多线程?一个进程中又可以包含一个或多个线程,一个线程就是一个程序内部的一条执行线索,如果要一程序中实现多段代码同时交替运行,就需要产生多个线程。
[b] 线程的生命周期[/b]
新建→运行→中断→死亡
中断有: 1.当前线程切换到另一个线程时发生
2.执行sleep时
3.执行wait方法时,调用wait方法使线程进入等待后,如果想让他开启必须调用notify方法
[b]看一下单线程的情况[/b],发现运行的结果他在线程MAIN里
[b] 用Thread类创建多线程[/b]
我们要实现多线程,必须编写一个继承了Thread类的子类,子类要覆盖Thread类中的run函数,在子类的run函数中编写想在新线程上运行的程序代码。启动一个新的线程,我们不是直接调用Thread的子类对象的run方法,而是调用Thread子类对象的start方法;Thread类对象的start方法将产生一个新的线程,并在该线程上运行该Thread类对象中的run方法,根据面向对象的运行时的多态性,在该线程上实际运行的是Thread子类对象的run方法。
由于我们没有给线程设置一个名字,所以使用语句 Thread.currentThread().getName() 他最后出来的是Thread-0
那么把上面的程序改写一下,能过setName来给创建的线程取一个名字:我的第一个线程
View Code
[b]联合 线程JOIN[/b]
什么是联合线程?当前线程邀请调用方法的线程优先执行,在调用方法的线程执行结束之前,当前线程不能再次执行。运行下面程序看到一开始Thread和Main两个线程一开始交替运行,后来只有Thread一个在运行。产生这样的原因是因为调用了JOIN。(使得Thread和MAIN合并成一个线程,并且Thread线程排在MAIN线程的前面,所以Thread线程没有结束前就不会执行到MAIN线程)
看一下运行的结束:
参考资料来源于:《JAVA就业培训教程》、《JAVA大学实用教程》
[b] 线程的生命周期[/b]
新建→运行→中断→死亡
中断有: 1.当前线程切换到另一个线程时发生
2.执行sleep时
3.执行wait方法时,调用wait方法使线程进入等待后,如果想让他开启必须调用notify方法
[b]看一下单线程的情况[/b],发现运行的结果他在线程MAIN里
public class test9 { public static void main(String[] args) { new TestThread().run(); } } class TestThread { public void run() { while(true) { System.out.println(Thread.currentThread().getName()); } } }
[b] 用Thread类创建多线程[/b]
我们要实现多线程,必须编写一个继承了Thread类的子类,子类要覆盖Thread类中的run函数,在子类的run函数中编写想在新线程上运行的程序代码。启动一个新的线程,我们不是直接调用Thread的子类对象的run方法,而是调用Thread子类对象的start方法;Thread类对象的start方法将产生一个新的线程,并在该线程上运行该Thread类对象中的run方法,根据面向对象的运行时的多态性,在该线程上实际运行的是Thread子类对象的run方法。
public class test9 { public static void main(String[] args) { new TestThread().start(); while(true) { System.out.println(Thread.currentThread().getName()); } } } class TestThread extends Thread { public void run() { while(true) { System.out.println(Thread.currentThread().getName()); } } }
由于我们没有给线程设置一个名字,所以使用语句 Thread.currentThread().getName() 他最后出来的是Thread-0
那么把上面的程序改写一下,能过setName来给创建的线程取一个名字:我的第一个线程
View Code
Class ThreadDemo1 { Public static void main(String[] args) { Thread tt = new TestThread(); tt.setDaemon(true); tt.start(); } } Class TestThread extends Thread { Public void run() { Whlile(true) { System.out.println(“run”+ Thread.currentThread().getName()); } } }
[b]联合 线程JOIN[/b]
什么是联合线程?当前线程邀请调用方法的线程优先执行,在调用方法的线程执行结束之前,当前线程不能再次执行。运行下面程序看到一开始Thread和Main两个线程一开始交替运行,后来只有Thread一个在运行。产生这样的原因是因为调用了JOIN。(使得Thread和MAIN合并成一个线程,并且Thread线程排在MAIN线程的前面,所以Thread线程没有结束前就不会执行到MAIN线程)
public class test9 { public static void main(String[] args) { Thread t = new Thread(new TestThread()); t.start(); int i=0; while(true) { if(i==100) { try{ t.join();} catch(Exception e){} } try{ Thread.sleep(10);} catch(Exception e){} System.out.println(Thread.currentThread().getName() + i++); } } } class TestThread implements Runnable { public void run() { int i = 0; while(true) { try{ Thread.sleep(10);} catch(Exception e){} System.out.println(Thread.currentThread().getName() + i++); } } }
看一下运行的结束:
参考资料来源于:《JAVA就业培训教程》、《JAVA大学实用教程》
相关文章推荐
- Java- 简单了解线程 线程创建和联合线程(一)
- Java- 简单了解线程 生产者与消费者问题(三)
- java + 线程系列之showThread(一)----简单的线程创建方式有两种
- 简单了解Java编程中线程的创建与守护线程
- Java- 简单了解线程 同步线程和死锁(二)
- Java线程学习-创建线程,线程的简单实用
- Java- 简单了解线程 生产者与消费者问题(三)
- Java- 简单了解线程 同步线程和死锁(二)
- Java并发学习之一——线程的创建
- github上创建java项目简单操作
- 如何创建并运行java线程
- JAVA 并发编程随笔【五】Thread线程创建及运行线程任务
- java 创建线程的三种方法Callable,Runnable,Thread比较及用法
- 并发编程(3)java创建线程
- java创建线程的方式
- Java创建线程
- 使用新的java线程池技术创建固定的线程去完成任务,都完成后计算总时间
- 线程创建方式以及主要方法简介 简单易懂
- java创建线程的三种方式及其对比
- 举例说明怎么简单的创建一个子线程