首页 > 编程语言 > 详细

Java多线程

时间:2020-07-30 01:01:00      阅读:94      评论:0      收藏:0      [点我收藏+]

1. 串行并行并发

技术分享图片

2. 进程

技术分享图片

 3. 线程

技术分享图片

 技术分享图片

4. 创建线程的方式

A:创建线程并启动:继承Thread类

step1:创建子类,继承Thread类。
step2:重写run(),线程体。并发执行的内容,写在这个方法中。
step3:启动线程:start()

/*
class Cat
class Person

class MyException extends Exception{//异常类

}
class MyThread extends Thread{//线程类

}
*/
package com.qf.demo02;
//step1:创建子类,继承Thread类。
//step2:重写run(),线程体。并发执行的内容,写在这个方法中。
//step3:启动线程:start()
//1.子类继承Thread类
class MyThreadA extends Thread{
	@Override
	public void run() {
		//2.此处写要被并发执行的代码。。
		for(int i =0;i<100;i++){
			System.out.println("\tt1..跳舞ing。。"+i);
		}
	}
}

class MyThreadB extends Thread{
	@Override
	public void run() {
		for(int i=0;i<100;i++){
			System.out.println("t2..唱歌ing。。"+i);
		}
	}
}
public class Test1Thread {

	public static void main(String[] args) {
		//需求:并发实现边唱边跳。。
		//创建线程的对象
		MyThreadA t1 = new MyThreadA();
		MyThreadB t2 = new MyThreadB();
		
		//对象访问方法,直接执行方法中内容。不是并发的范畴
//		t1.run();
//		t2.run();
		
//		for(int i = 0;i<100;i++){
//			System.out.println("\t\tmain...伴舞"+i);
//		}
		
		//3.启动线程?表示该线程一切准备就绪,随时可以被cpu执行了。但是cpu是否来执行你,不确定。。
		t1.start();//表示启动t1线程
		t2.start();//表示启动t2线程
		
		
		MyThreadA t3 = new MyThreadA();
		t3.start();//老子想重来一次。。可否啊?java.lang.IllegalThreadStateException
		
		
		
	}

}

B:实现Runnable接口,创建线程的方式二

step1:创建实现类,实现Runnable接口
step2:重写run(),线程体。并发执行的内容,写在这个方法中。
step3:启动线程:
	创建实现类的对象:mt
	根据实现类对象mt,创建Thread类对象t3,t4
	start()启动该线程:t3,t4
对比run()和start()
run(),是线程体。就是要并发执行内容。
start(),启动一个线程?就是该线程准备就绪了,随时可以被CPU执行。什么时候执行,CPU自己说了算。
一个线程,只能被start一次。
Thread类的构造方法
new Thread();//并发执行,执行run()方法。
new Thread(Runnable target);//并发执行,执行的run是Runnable接口的实现类实现run方法
package com.qf.demo02;
/*
step1:创建实现类,实现Runnable接口
step2:重写run(),线程体。并发执行的内容,写在这个方法中。
step3:启动线程:
 */


class MyThreadC implements Runnable{

	@Override
	public void run() {
		for(int i=0;i<100;i++){
			System.out.println("\t左手画圈。。。"+i);
		}
	}
	

}
class MyThreadD implements Runnable{

	@Override
	public void run() {
		for(int i=0;i<100;i++){
			System.out.println("右手画方块。。"+i);
		}
	}
	
}
public class Test2Runnable {

	public static void main(String[] args) {
		MyThreadC mt1 = new MyThreadC();
		MyThreadD mt2 = new MyThreadD();
		
		
		Thread t3 = new Thread(mt1);//当启动t3线程,执行mt1对应的run方法
		Thread t4 = new Thread(mt2);//当启动t4线程,执行mt2对应的run方法
		
		t3.start();
		t4.start();
		
	}

}

  

 

Java多线程

原文:https://www.cnblogs.com/yzg-14/p/13401441.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!