java线程模式
来源:互联网 发布:iphone备份短信到mac 编辑:程序博客网 时间:2024/06/03 07:08
今天学习了java的多线程,害怕自己的猪脑子,把今天所学的都忘了,赶紧写篇博客加深一下印象。
有两种创建线程的方法,一个是通过Thread类,一个是通过Runnable接口创建。
先说一下用Thread类怎么创建线程。
java通过Thread类将线程所必须的功能都封装起来,想要创建一个线程,只需要创建一个类继承Thread类,然后重写Thread类里的run()方法就可以了。
public class ThreadTest extends Thread{@Overridepublic void run() {super.run();System.out.println(this.getName());}public static void main(String[] args) {System.out.println(Thread.currentThread().getName());Thread thread1 = new ThreadTest();Thread thread2 = new ThreadTest();thread1.start();thread2.start();}}
通过Thread类创建线程的代码如上:在上述代码中建立了thread1和thread2两个线程,start()方法是负责建立线程的。当调用start()方法时,系统会自动调用run方法,然后run方法中的this.getName()方法输出了当前线程的名字,由于在建立的线程时没有指定线程的名字,因此所输出的线程名是系统默认的,也就是Thread-n 的形式。上述代码执行后输出:
mainThread-0Thread-1
注意:任何一个java程序都必有一个主线程。一般这个主线程的名字为main。只有在程序中建立另外的线程,才能算是真正的多线程程序,也就是说,多线程程序必须拥有一个以上的线程。
看过上面代码你可能会考虑,如果我不想使用系统默认的线程名字,想用自己的给线程气的名字该怎么办呢?其实在Thread类中有很多的构造方法。有的构造方法可以设置线程名字。也可以通过setName()方法来设置线程名字。使用Thread类创建线程简单的说完了,下面在说一下另一种方法:
使用Runnable接口创建线程
使用Runnable接口创建线程的过程分为两步
1、将实现Runnable接口的类实例化。
2、建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法,最后通过Thread类的start()方法建立线程。
看一下代码的简单实现:
public class ThreadTest implements Runnable{@Overridepublic void run() {System.out.println(Thread.currentThread().getName());}public static void main(String[] args) {System.out.println(Thread.currentThread().getName());ThreadTest runnable1 = new ThreadTest();ThreadTest runnable2 = new ThreadTest();Thread thread1 = new Thread(runnable1,"ThreadTest1");Thread thread2 = new Thread(runnable2);thread2.setName("ThreadTest2");thread1.start();thread2.start();}}在上述代码中我们创建了runnable1和runnable2两个对象,并且以参数的形式传入到Thread类的两个构造方法中,thread1通过构造方法来设置线程的名字,thread2通过setName()方法来设置线程的名字运行start()方法。和上面讲说的步骤一样。运行一下。运行的结果如下:
mainThreadTest1ThreadTest2
很完美所出现的结果和我们所预想的一样,看来没什么错误了。
其中Thread.currentThread();该方法是Thread类的静态方法,它总是返回当前正在执行的线程对象。
好了java创建线程的两种方法已经实现完毕,可能你会很好奇为什么java会提供两种创建线程的办法呢?这两种有什么不一样呢?好吧给大家说一下我的理解:
其实这两种方法在本质上说是一种方法,即都是通过Thread类来创建线程,并运行run方法。但是他们的大区别是一个是用继承,一个是使用接口实现。因为java不支持多继承所以当你继承了Thread时就不能继承其他类了,因此java提供了Runnable接口的方法来建立线程,这样线程类可以在有必要的时候继承和业务有关的类,而不是Thread类。
- Java线程创建模式
- java线程模式
- java 线程的设计模式
- java设计模式之线程池模式
- Java实现司机售票员线程同步模式
- java单例模式的线程安全问题
- java实现线程安全的单利模式
- java线程安全的单例模式
- java基础 IO/线程/GUI,装饰模式
- Java中的线程(四)- Future模式
- java线程安全的单例模式
- java 线程安全的单例模式
- java线程安全的单例模式
- java单例模式线程安全
- java线程安全的单例模式
- Java五种单例模式与线程安全
- Java五种单例模式与线程安全
- java单例模式(线程安全)
- L2-002. 链表去重
- more effective C++条款十二解析
- python3中替换python2中cmp函数的新函数分析(lt、le、eq、ne、ge、gt)
- Swift3 时间戳转换成整型字符串 Double value cannot be converted to Int because the result would be greater than
- <棋盘型DP> noip 2008 传纸条
- java线程模式
- Linux内核启动及文件系统加载过程
- dao-service-servlet-jsp构建简易web通讯录(三层开发)软件安装
- mysql table相关命令
- hdu6200mustedge mustedge mustedge
- 模型分类评价
- SpringBoot配置log4j2的JdbcAppender日志写入数据库,可定义哪些日志写入
- Docker for Windows 里的Shared Drives 设置不生效
- kuangbin J