Java 线程初步

线程的相关定义

进程

启动一个程序、运行的这一个过程成为一个进程。

线程

启动一个程序后,在该程序里做各种事情,各自分工不同的过程,每个过程叫做一个线程。

进程与线程的实例

1、启动了eclipse程序,该过程可以称为是一个进程(相对于系统来说),然后再eclipse中同时运行多条代码,每一个运行的过程是一个线程。
2、对于每个运行的代码,当点击运行时,该过程成为一个进程(相对于JVM运行环境来说),运行主函数、其他函数,或先后或同时的运行多个函数的过程,这多个过程中每一个是一个线程。

线程运行实例

多线程

含义

多个线程同时运行。

使用方法

1、继承Thread类。
2、实现Runnable接口。
(两种用法的区别:使用接口列出所有的接口中的函数、使用继承要注意一个类只能继承一个类,不能同时继承多个类,但是一个类可以有多个接口)

多线程运行过程中的易错点

多线程同时对一个变量进行修改

修改方法:
1、将这个变量局部化。(原来的方法出错的原因是因为这个变量在这些线程的范围内=>导致这些线程都可以对这个变量修改)

代码段的理解:
十个线程运行会对全局变量x进行操作,最后输出的x是不规则的,因为x是被这是个线程共享的。(共享=>每个线程对x进行+1+2+……+10最后一共加了55,而虽然每次输出的x不规则,但是最后一次的x永远是550,证明这是个线程的每个的55都给了这一个x)
改善:

int x=0;  //此时的x属于全局变量 =>可以
public void count() {         
	
	//如果将段首的int x=0;放到这个count方法中=>相当于每次调用这
	//个方法(运行这个线程)都声明了一个属于自个儿的x。
	
	//int x=0; 输出十个55.
	for (int i = 0; i <= 10; i++) {
		x+=i;
	}
	System.out.println(x);
}
public static void main(String[] args) {
		//runable 是系统已经有的线程类,可以直接创建对象
		Runnable counteRunnable = new Runnable() {
		Add counterAdd = new Add();
			@Override
			public void run() {   //用的是接口Runnable=>重写run函数
				counterAdd.count();
			}
		};
		//通过用runable创建了线程对象,叫countrunable,
		//通过循环结构来开启这十个线程。
		for (int i = 0; i < 10; i++) {
			new Thread(counteRunnable).start();
		}

2、让对象局部化*

int x=0;
public void count() {
	for (int i = 0; i <= 10; i++) {
		x+=i;
	}
	System.out.println(x);
}
public static void main(String[] args) {
	Runnable runnable = new Runnable() {		
		@Override
		public void run() {
			Add add = new Add();
			add.count();
		}
	};
	//创建线程对象的过程
	for (int i = 0; i < 10; i++) {
		new Thread(runnable).start();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值