栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java多线程(1)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java多线程(1)

前言

大家好,我是小涛,一名学Java一学期的大一学生,本人所发的见解都是本人自己所理解的Java知识问题,有任何不妥之处欢迎指出,本人浅薄理解,感谢大家的耐心观看。

 
1.什么是Java的多线程

同时执行多个线程的处理,比方说10个线程同时给同一个变量作加一的操作,每个线程加5次,最后的结果不是50,还是10,这就是Java的多线程。

2.并发与并行

并发:时间段内有不少的线程或进程在执行,但何时间点上都只有一个在执行,多个线程或进程争抢时间片轮流执行。

并行:时间段和时间点上都有多个线程或进程在执行。

补充一点:上课的时候我们老师说,我们在一台计算机上使用多个软件,看似是同时运行的,其实不是同时运行的,在cpu上会有一个快速的转换过程,这个点我个人有点疑问,于是课下去找了下资料,和询问了老师,老师说确实是他课上讲的太绝对话了,单核cpu所有的软件不是同时运行的,而多核cpu是几个软件同时运作的。

3.Java创建线程的方法

(1)继承Thread类,实现run()方法;

(2)实现Runnable接口,实现run()方法;

(3)实现Callable接口,实现call()方法。

call()方法与run()方法的两个主要区别:

1、call()方法可以有返回值,且返回值类型需要与声明接口时的泛型类型一致。

2、call()方法可以抛出异常。

public class Demo01 {
	public static void main(String[] args) {
		Mytecher mt=new Mytecher();
		new Thread(mt, "老师A").start();
		new Thread(mt, 老师B").start();
		new Thread(mt, "老师C").start();//打开三个线程
	}

}


class Mytecher extends Thread{//继承Thread类
	static int paper=80;//定义80张试卷吗 
	@Override
	public void run() {//重写run方法
		while (true) {
			if(paper>=0){
				System.out.println(Thread.currentThread().getName()+"正在发售第"+paper--+"张试卷");//对结果的输出
			}
		}
	}
}
//三个老师分发80张试卷

这也是我的一次作业代码,三个老师分发80张试卷,一开始对于多线程的理解不深,写成三个老师发了240张试卷,这种错误对于我这种Java小白来说很常见,我也在不断的错误中改进自己的代码,最终写成。

以下这段代码是我们上课最初写的打开线程的最基本方法,就是利用start();进行线程的打开,然后输出,线程问题的初学者可以借鉴和学习。

public class Mythread_Demo {
	public static void main(String[] args) {
		ThreadA tha=new ThreadA();
		tha.setName("线程A");
		tha.start();
		ThreadB thb=new ThreadB();
		new Thread(thb,"线程B").start();
	}

}

class ThreadA extends Thread{
	public ThreadA() {
		
	}
	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println(getName()+"aaaaaaa");
		}
	}
}
class ThreadB implements Runnable{

	public ThreadB(ThreadB thb, String string) {
		// TODO Auto-generated constructor stub
	}

	public ThreadB() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void run() {
     for (int i = 0; i <100; i++) {
		System.out.println(Thread.currentThread().getName()+"bbbbbbb");
	}

		
	}
	
}

总结

 我在学习完Java的线程问题后,自己也有很多疑惑,并且自己也积极的去解决了这些疑惑,我在想既然是cpu问题,那肯定分单核和多核运行的cpu,我也是问了身边的一些朋友,在Java中多线程的内容并不多,Java多线程问题并不细化,进程问题更多的是在操作系统上面。这也就是我的一些浅薄理解,感谢观看。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886281.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号