Java之多线程

1、进程与线程

       我们常用的QQ就是一个进程,但是只有在启动之后,才开启了一个进程,开启时需要一定的内存和资源来运行;而线程是在QQ启动之后运行的一些任务,比如QQ聊天、视频,都需要新的线程来执行该任务,即先有进程,然后再有线程。

2、Java程序中多线程的实现

    线程的状态:

  •  start():线程状态变成可运行状态(并非调用start就直接运行了)
  • sleep():当前所在线程休眠指定时间 ,静态方法,休眠过程中打断就抛出异常
  • join():调用某线程的该方法,将当前线程与该线程"合并",即等待该线程结束,再恢复当前线程的运行。
  • yield():当前线程进入运行状态,cpu去执行其它线程


 继承Thread类和实现Runable接口,新线程执行,即是执行run()方法里的内容:

public class TestThread extends Thread {//继承Thread类,Thread内部同样是实现了Runable接口。实现多线程的方法一
	public void run(){
		int count = 0;
		boolean keepRunning = true;
		while(keepRunning){
			System.out.println(getName()+ (++count));
			if(count == 100){
				keepRunning = false;
			}
			if(count%10== 0){
				try {
					Thread.sleep(1000);//当前线程进行休眠1000ms,在哪个线程里调用就休眠哪个线程
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	//run方法结束即当前线程结束
	}
	
	public static void main(String[] args){
		Thread testThread = new TestThread();
		testThread.setName("Mr. Thread");
		testThread.start();//进入可运行状态,并非直接就运行
		Thread testRunnable = new Thread(new TestRunnable(),"Ms. Runnable");
		testRunnable.start();//进入可运行状态,并非直接就运行
	}

}


class TestRunnable implements Runnable{//实现Runnable接口  实现多线程的方法二
	@Override
	public void run() {
		int count = 0;
		boolean keepRunning = true;
		while(keepRunning){
			System.out.println(Thread.currentThread().getName()+ (++count));			
			if(count == 100){
				keepRunning = false;
			}			
			if(count%10== 0){
				try {
					Thread.sleep(1000);//当前线程进行休眠1s
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}		
	}
	//run方法结束即当前线程结束
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值