贤邦网站建设app开发,称多县公司网站建设,想学做网站 应该学,网站开发后端框架什么意思这里是Themberfue 上节主要讲完了多线程的一些基础知识#xff0c;这节通过代码进一步理解多线程#x1fae1; 多线程 Java标准库中提供了Thread类#xff0c;以程序员们编写多线程代码#xff0c;我们可以查看官方文档进一步了解Thread的特性以及提供的接口。 类似于Sy… 这里是Themberfue 上节主要讲完了多线程的一些基础知识这节通过代码进一步理解多线程 多线程 · Java标准库中提供了Thread类以程序员们编写多线程代码我们可以查看官方文档进一步了解Thread的特性以及提供的接口。 · 类似于Sytem类Math类以及某些超类等Thread也是Java.lang在包下是程序运行时默认导入的。 Java8官方文档 Thread 下面我们通过编写代码来进一步感受和学习多线程。 class MyThread extends Thread{Overridepublic void run() {while (true) {System.out.println(Hello Thread);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}public class Demo1 {public static void main(String[] args) throws InterruptedException{Thread t new MyThread();// 创建一个新的线程t.start();// 实际上没有创建一个新的线程还是只存在一个main线程// t.run();while (true) {System.out.println(Hello main);Thread.sleep(1000);}}
} · 我们先通过创建 MyThread 类来编写这个类继承了 Thread并且重写了 Thread类的 run 方法 · run 方法里的代码逻辑就是这个线程的所要运行的代码逻辑 · 随后通过 start 方法来真的创建一个线程使其运行起来。 · 需要注意的是单纯地调用 run 方法是没有真正创建一个线程地只有调用 start 方法才是真的创建一个线程。 · 上述代码中我们让 main 线程一个进程至少要包含的那个线程主线程和Thread线程执行相同的代码逻辑我们来看看运行的结果。 PS这里的Thread.sleep(1000)是让线程休眠一秒让当前的线程暂时放弃CPU时间过了之后再度执行后续的代码 · 不难看出main和我们创建的线程是同时执行代码逻辑的。 · 但它们的执行顺序是随机的这与操作系统的随机调度有关我们程序员是不能干涉的。 · 唯一可行的就是设置某个线程的优先级但也仅仅是让其更可能的先执行调度本质上还是随机的。 jconsole · jconsole 是JDK中提供的一个工具可以用来查看线程的一些信息以及运行状态。 · 它通常在JDK里的bin目录里 我们在程序运行后打开jconsole
记住一定要在程序运行时才能看到 Demo1这个当然我的这个叫Demo1你们的就不一定了。
点击连接就可以进去查看信息了。
我们点击线程这个tab栏
在左下侧我们可以看到有很多线程在这些线程中除了 main 和 Thread-0 以外都是 JVM 内置的线程启动的任何一个Java进程都会自带这些线程 点击对应的线程我们可以查看其中的一些信息 Runnable · 除了直接提供 Thread 类创建线程以外在Thread类的构造方法中可以传入一个实现了Runnable 接口的类 · Runnable 本质就是一个任务一段要执行的逻辑。 · 线程中所做的任务在 Runnable 里编写然后传入创建的线程去执行。 · 上述的办法看起来有点麻烦其实不然这样写是非常推荐的这样可以让要执行的任务本身和线程这个概念脱离起来也就是解耦合。 · 如果后续要让其他线程同样执行这段逻辑也就不用重写一段相同的逻辑了。 class MyRunnable implements Runnable{Overridepublic void run() {while (true) {System.out.println(My Thread);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}public class Demo2 {public static void main(String[] args) throws InterruptedException {MyRunnable runnable new MyRunnable();Thread t new Thread(runnable);// 创建一个新的线程t.start();while (true) {System.out.println(My main);Thread.sleep(1000);}}
} 本节的讲解就到这里希望你我都有所收获 下一节我们会更进一步的讲解多线程的知识以及代码编写 毕竟不知后事如何且听下回分解