Java多线程基础(一)
来源:互联网 发布:mac 访问共享文件夹 编辑:程序博客网 时间:2024/05/18 01:51
文章转载自第一代码http://www.diyidaima.com/article/detail/jhyozdjp
首先我们需要理解什么是线程?线程是在进程中独立运行的子任务。
一.多线程的使用
在Java中,已经自带对多线程技术的支持,可以方便的实现多线程编程。实现多线程的方式主要有两种,一种是继承Thread类,另一种是实现Runnable接口。下面我们先来看看第一种。
1.继承Thread类
首先我们来看一下Thread类的结构:public class Thread implements Runnable.可以发现,Thread实现了Runnable接口,Thread和Runnable是多态关系。实际上,由于Java语言的特点是单根继承,所以使用继承Thread类的方式创建新线程时,就会有不支持多继承的缺点。所以为了支持多继承,可以实现Runnable接口的方式,边实现边继承。而这两种方法实际上没有本质的区别。我们先来看看第一个实例://自定义线程类MyThread public class MyThread extends Thread{ @Override public void run(){ super.run(); System.out.println("MyThread"); } }//运行类Runpublic class Run { public static void main(String[] args){ MyThread mythread=new MyThread(); mythread.start(); System.out.println("运行结束!"); }}
运行结果:
运行结束! MyThread
从上面的运行结果可以知道,MyThread.java类中的run方法执行的时间比较晚,这说明在使用多线程技术时,代码的运行结果与代码的执行顺序或调用顺序是没有关系的。这说明线程的调用具有随机性。
注意:如果多次调用start()方法,则会出现Exception in thread “main” java.lang.IllegalThreadStateException异常。
2.实现Runnable接口
有这样一种情况,当想创建的线程类已经有了一个父类了,而Java又不支持多继承,所以就不能再继承Thread类了,这个时候就可以使用第二种方式实现多线程。
下面我们来看看一个实例:
//创建一个实现Runnable接口的类MyRunnablepublic class MyRunnable implements Rinnable{ @Override public void run(){ System.out.println("运行中!"); }}
那现在我们如何使用这个MyRunnable类呢?我们知道,Thread有多个构造方法(8个)其中有两个构造方法Thread(Runnable r)和Thread(Runnable r,String name)可以传递Runnable接口,说明我们可以创建一个MyRunnable类的对象并传入其中。
//运行类Run public class Run{ public static void main(String[] args){ Runnable runnable=new MyRunnable(); Thread thread=new Thread(runnable); thread.start(); System.out.println("运行结束!"); } }
运行结果如下:
运行结束! 运行中
总结:通过上面的两个实例,我们初步掌握了线程以及如何使用线程。
更多详情可以查看原文http://www.diyidaima.com/article/detail/jhyozdjp
阅读全文
0 0
- JAVA多线程基础(一)
- java多线程基础(一)
- JAVA多线程基础(一)
- java多线程基础(一)
- JAVA基础-多线程(一)
- Java多线程基础(一)
- java 多线程基础(一)
- java多线程(一)多线程基础
- Java多线程基础一(基础概念)
- java多线程基础一
- java多线程基础一
- Java多线程干货系列—(一)Java多线程基础
- java多线程编程 - 基础篇 (一)
- 黑马程序员 JAVA基础 - 多线程(一)
- Java基础—多线程(一)
- 黑马程序员--Java基础--多线程(一)
- java基础 -- 多线程总结(一)--基本概念
- java基础篇--多线程(一)
- Spring读取数据库里面的application.perproties格式的String
- 关于STM32定时器输出方波时改变频率延时相应的问题
- 数字签名是什么?
- html列表
- 使用Hibernate SQLQuery执行原生SQL
- Java多线程基础(一)
- C++如何实现类对象只能动态分配或只能静态分配
- T1 hyf的赌约
- “Beginning Python”(六)“Plot”
- STM32菜鸟成长记录---RS485通讯协议的应用
- vim编辑器
- 罗斯柴尔德
- Election Time
- SvcUtil.exe 生成的代理类与别人生成的不同原因