06多线程

进程:

正在运行的程序
是系统进行资源分配和调用的独立单位
每一个进程都有他自己的内存空间和系统资源
进程指当前正在执行的程序,代表一个应用程序在内存中的执行区域

线程:

正在运行的程序下的执行单元,或者说是一条执行路劲
单线程:程序中只有一个执行单元,或者说只有一条执行路劲
多线程:程序中只有多个执行单元,或者说有多条执行路劲

java实现多线程的

方式1:继承Thread
步骤
	1.继承Thread
	2.重写run
	3.创建线程对象
	4.调用start方法启动线程
注意:run用于封装被线程执行的代码,直接调用相当于普通方法(单线程)
	start用于启动线程,由JVM执行线程
    一、
    MyThread myThread = new MyThread();
    MyThread myThread = new MyThread("兔子1");
    二、
    带有内部类的
    Test test = new Test();
    Add add=test.new Add();
    Div div=test.new Div();
    Thread thread = new Thread(add);
    thread.start();
    thread=new Thread(div);
    thread.start();

多线程的随机性
每个线程都由CPU(一个)处理,CPU一次只能处理一个线程,而多线程的同时执行,只是在我看看来是同时执行。本质上是CPU快速切换实现的,只是切换时间非常短可以忽略不计(可以认识是同时)

实现多线程:
方式二:实现Runnable接口
定义一个类实现Runnable类
在类中重写run方法
创建类的对象
创建Thread对象,把类的对象作为构造方法的参数
启动线程
一、
sale sale = new sale();
Thread thread = new Thread(sale);
二、实现接口的,也可以在创建对象时给名称
Cross c = new Cross();
Thread thread1 = new Thread(c,"person1");

多线程的实现方式:
继承Thread类
实现Runnable接口
实现Runnable的好处:
避免了Java的单继承的局限性
适合多个线程去同时处理同一个资源

资源共享的问题
出现相同票数
出现负数票
原因:
多线程的随机性导致(run()的操作不完整)
如果判断出现数据安全问题
1.多线程
2.资源共享
3.多语句操作共享的数据

数据安全问题出现的本质原因:
多线程的随机性导致run方法中多语句操作共享数据,操作执行的不完整
如果解决:
让操作执行完整
用锁把操作锁起来,同一时间只能有一个线程执行这个操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值