java中多线程的基本理解以及运行机制

本文介绍了Java中实现多线程的两种主要方法:通过继承Thread类和实现Runnable接口。通过具体示例展示了如何创建和启动线程,并演示了线程的不同状态及如何使线程休眠。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓线程,就是一种简单的进程,多线程可以实现多个运行,这样就丰富我我们的功能。

线程有以下几个状态:

可运行状态,运行状态,阻塞状态,销毁状态。

运行线程一般有两种方式,一种是继承thread类重写run方法。第二种是写Runnable然后重写run方法实现线程。

下面是分别两类方法:

1:

package Test;

public class dxcheng {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Cat1 cat1=new Cat1();
//		启动线程,启用run函数,进入可运行状态
		cat1.start();
	}
}
class Cat1 extends Thread{
	int times=0;
	public void run(){
		while(true){
//			休眠1000毫秒
			try {
//				进入阻塞状态
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("Hello"+times);
			times++;
			if(times==10){
//				退出线程
				break;
			}
		}
	}
}
2:

package Test;

public class runnable {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Dogs dog1=new Dogs();
		Thread t=new Thread(dog1);
		t.start();
	}

}
class Dogs implements Runnable{
	int times=0;
	public void run(){
		while(true){
			try {
				
				Thread.sleep(1000);
				times++;
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("您好"+times);
			if(times==10){
				break;
			}
		}
	}
}


最后就是实现多线程交替进行工作:

package Test;

public class runnable {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Dogs dog1=new Dogs();
		Thread t=new Thread(dog1);
		Pig pig1=new Pig();
		Thread m=new Thread(pig1);
		t.start();
		m.start();
	}

}
class Dogs implements Runnable{
	int times=0;
	public void run(){
		while(true){
			try {
				
				Thread.sleep(1000);
				times++;
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("我是狗"+times);
			if(times==10){
				break;
			}
		}
	}
}
class Pig implements Runnable{
	int times=0;
	public void run(){
		while(true){
			try {
				
				Thread.sleep(1500);
				times++;
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("我是猪:"+times);
			if(times==10){
				break;
			}
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值