java虚拟机中的两种线程 以及实现方法
博客专区 > hero丶 的博客 > 博客详情
java虚拟机中的两种线程 以及实现方法
hero丶 发表于7个月前
java虚拟机中的两种线程 以及实现方法
  • 发表于 7个月前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

在Java虚拟机内部有两种线程:

守护线程 虚拟机自己使用。 执行垃圾收集任务的线程。 只要有任何非守护线程存在,那么程序也在继续运行。 非守护线程 java程序的初始线程:有main的。 普通的java程序:如果main中没有调用其他线程,执行完程序之后就终止了该程序中唯一的非守护线程,导致虚拟机实例退出。 那么介绍一下java线程的两种方法 先看一下java线程运行时各个阶段的运行状态

java实现多线程有两种方法 1、继承Thread类 2、实现Runnable接口 这两种方法的共同点: 不论用哪种方法,都必须用Thread(如果是Thead子类就用它本身)产生线程,然后再调用start()方法。 两种方法的不同点: 1、继承Thread类有一个缺点就是单继承,而实现Runnable接口则弥补了它的缺点,可以实现多继承 2、继承Thread类必须如果产生Runnable实例对象,就必须产生多个Runnable实例对象,然后再用Thread产生多个线程;而实现Runnable接口,只需要建立一个实现这个类的实例,然后用这一个实例对象产生多个线程。即实现了资源的共享性

基于以上两点所以建议用第二种方法

下面用例子来做说明 程序1:

package com.dr.runnable1; //一个类只要继承了Thread类,则此类就是多线程类 class MyThread extends Thread { private String name; public MyThread(String name) { this.name=name; } //如果要使用多线程,则必须有一个方法的主体 public void run() { //打印输出 for(int i=0;i<10;i++) { System.out.println(this.name+"----->运行、、、、"); } } } public class Demo1 { public static void main(String args[]) {

//第一种方法 Runnable r1=new MyThread("线程A"); Runnable r2=new MyThread("线程B"); Runnable r3=new MyThread("线程C"); Thread t1=new Thread(r1); Thread t2=new Thread(r2); Thread t3=new Thread(r3); t1.start(); t2.start(); t3.start();

// mt1.run();//线程执行,使用start方法 // mt2.run(); // mt3.run();

//第二种方法

// MyThread mt1=new MyThread("线程A"); // MyThread mt2=new MyThread("线程B"); // MyThread mt3=new MyThread("线程C"); // mt1.start(); // mt1.start();//线程只能启动一次 // mt2.start(); // mt3.start();

} 

}

程序的运行结果是: 1 这是继承了Thread类,第一种方法产生多个Runnable实例对象,然后用Thread产生多个线程 第二种方法,因为这个类已经继承了Thread类,所以就可以直接利用它本身产生多个线程 程序2:

package com.dr.runnable1; class MyThread1 implements Runnable { private int ticket=10; public void run() { for(int i=0;i<500;i++) { if(this.ticket>0) { System.out.println("卖票----->"+(this.ticket--)); } } } } public class Demo2 { public static void main(String args[]) { MyThread1 mt=new MyThread1(); Thread t1=new Thread(mt); Thread t2=new Thread(mt); Thread t3=new Thread(mt); t1.start(); t2.start(); t3.start(); }

}

程序运行结果: 2 这个程序是实现Runnable了,产生一类的实例对象,然后用Thread产生多个线程。

标签: java 线程
共有 人打赏支持
粉丝 0
博文 9
码字总数 898
×
hero丶
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: