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<Class>接口,实现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多线程问题并不细化,进程问题更多的是在操作系统上面。这也就是我的一些浅薄理解,感谢观看。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值