在日常的开发中,很多一些开发中较常见的问题,还是需要去仔细研究一下,最重要的还是实践。以小见大。
一、Java线程中。Main、Runnable和Thread。
相信在工作中,只要是有用到多线程异步编程,最起码都要和这三个打交道。
1、每个Java应用程序都有一个执行Main()函数的默认主线程。这个就是主线程
2、应用程序也可以创建线程在后台运行。Java主要是通过Java.Lang.Thread类以及Java.lang.Runnable接口来实现线程机制的。这边所有的都是其余线程
本贴主要是从实践角度来实践一下多种不同的写法。
以小处来窥见大的知识点。
二、下面来看一个Runnable接口的使用方法
注意这是一个接口
package com.newframe.controllers.api;
public class TestRunnable {
public static void main(String[] args) {
/**
* 在Java8之前,这是唯一一种创建Runnable的方式
*/
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("这是Java8以前的创建runnable的方式");
}
};
/**
* 在Java8引入了lambda表达式后的方式
*/
Runnable r2 = () -> System.out.println("这是Java8引入了lambda表达式后创建的runnable的方式");
/**
* 在这边,你这样调用.run()即可运行,当然,我们一搬不这样做。
*/
r1.run();
r2.run();
/**
* 我们一搬都是将Runnable对象传递到Thread类接收Runnable作为参数的构造函数中
* 然后启动该线程
*/
//下面这个线程就是
Thread t1 = new Thread(r1);
t1.start();
}
}
三、关于Thread类的使用
步骤一、
package com.newframe.controllers.api;
/**
* 创建一个MyThread类来继承Thread类
*/
public class MyThread extends Thread{
//在使用这个MyThread实现类的时候,首先要先重写他的run方法,让他去做你要求的事
@Override
public void run() {
//例如
System.out.println("请去给我找个靠谱的工作");
//下面这一句可以不要
// super.run();
}
}
步骤二、
package com.newframe.controllers.api;
public class TestMyThread {
public static void main(String[] args) {
//创建MyThread类对象
MyThread myThread = new MyThread();
//调用重写过的run方法
//输出:请去给我找个靠谱的工作
myThread.run();
}
}
上面是两个最简单的多线程的实践。
希望能抛砖引玉。