java 线程创建方法_java创建线程两种方法

0818b9ca8b590ca3270a3433284dd417.png

/*

进程:是一个正在执行中的程序

每一个进程执行都有执行顺序,该顺序是一个执行路径,或叫控制单元

线程:就是进程中一个独立的控制单元

线程在控制着进程的执行

一个进程至少包含一个线程

Java VM 启动时会有个进程java.exe

该进程中至少有一个线程复制java程序的执行,这个线程运行的代码存在于main方法中,

该线程称之为主线程

JVM启动不止一个线程,还有复制垃圾回收机制的线程

创建线程:(1)继承Thread类;复写run方法;创建对象,调用start方法

(2)实现Runnable接口,复写run方法,建立线程对象,传递Runnable子类对象给Thread类构造函数

*/

package pack;

public class Main {

public static void sys(Object obj) {

System.out.println(obj);

}

public static void main(String[] args) {

//method1();

//method2(); //继承Thread方法创建线程,实例:4窗口卖票

method3();//实现Runnable方法创建线程,实例:4窗口卖票

}

public static void method1() {

Demo d1 = new Demo("one---"); //创建一个线程

Demo d2 = new Demo("two---"); //创建一个线程

d1.start();

d2.start();

for(int i=0;i<20;i++)

sys("main run");

}

public static void method2() {

Ticket t1 = new Ticket();

Ticket t2 = new Ticket();

Ticket t3 = new Ticket();

Ticket t4 = new Ticket();

t1.start();

t2.start();

t3.start();

t4.start();

}

public static void method3() {

TicketDemo t = new TicketDemo();

Thread t1 = new Thread(t);

Thread t2 = new Thread(t);

Thread t3 = new Thread(t);

Thread t4 = new Thread(t);

t1.start();

t2.start();

t3.start();

t4.start();

}

}

class Demo extends Thread {

Demo(String name) {

super(name); //父类定义了getName方法,实现自定义线程名称,默认为Thread0,1

}

public void run() {

for(int i=0;i<20;i++)

//Main.sys(this.getName()+"demo run");

//上下两句无差别,currentThread获取当前线程对象,即this

Main.sys(Thread.currentThread().getName()+"demo run");

}

}

class Ticket extends Thread {

static int tickets = 200; //一共200张票,一定要static,4窗口公用200张

public void run() {

while(true) {

if(tickets>0)

Main.sys(this.getName()+"---"+tickets--);

}

}

}

class TicketDemo implements Runnable {

int tickets = 100;

public void run() {

while(true) {

if(tickets>0)

Main.sys(Thread.currentThread().getName()+"---"+tickets--);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值