第十天总结0402

1.包package
a.包的作用是对文件进行分类管理
b.包给类提供了多层命名空间。
c.包名写在程序文件的第一行。
包与包之间只能用public和protected这两种修饰符,protected是在不同包之间的父子类可用
四种类修饰符权限从大到小分别是public.protected,default.private
import 包名.类名  这是导入类的格式
import导的是包中的类,不是包,他的出现可有可无,他唯一的作用是可以简化类名的书写。
jar包,jar包就是一种压缩格式,注意命令行代码。
2、多线程
JAVA是为数不多的支持多线程的语言之一
进程:通俗的解释就是正在进行中的程序
所谓线程,其实就是一个进程中的控制单元,一个进程可以多个这样的控制单元,就称之为多线程(网络蚂蚁的例子)。
多线程存在的意义就是让代码块同时运行
Thread线程类 他可以在底层开辟控制单元
Thread中有一个run方法,该方法是空的,如果没有执行语句的话则不执行任何操作返回。
start()方法,是该线程开始执行,并由JVM调用该线程的run方法
多线程具有随机性。多个线程其实就是共同抢CPU的资源
main函数是主线程,他的名字就是main
线程创建的第一种方法:
继承Thread类
a.继承Thread
b.复写Thread类中的run方法,将多个控制单元要运行的代码存放其中,其实run方法就是存放线程要运行的代码区域
c.通过建立子类对象,创建控制单元
d.调用控制单元的start方法,开启线程,并运行run方法
currentThread()获取当前执行线程的对象
getName()获取当前执行线程的名字
线程编号和数组一样,从0开始的
线程的四种状态:
被创建,运行,冻结,消亡
start()
run()
stop()
sleep()需要指定睡眠时间,单位是毫秒
wait()
notify()
线程的第二种创建方式
实现Runnable接口
a.建立Runnable接口的子类
b.覆盖run方法,这里覆盖的run方法是Runnable中的run方法当中
c.通过Thread类建立控制单元。并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数,这是为了让创建的控制单元去运行自动以的run方法,因为该run方法所属的是

Runnable接口的子类对象
d.调用控制单元的start方法开启线程,并运行run方法
如果一个类已经有了自己的父类,但是仍然需要进行多线程处理,则用第二种方式,用实现接口的方式
一般的实现接口的方式比较常用
Runnable确定的是run方法中存放代码的位置。是一种规则,所有要多线程处理的代码都是必须在run方法中的,这就确定了一个位置,所以可以抽出成了接口。
Thread不能抽象的,因为他必须要建立控制单元

/*
模拟多线程的Thread类和Runnable接口,本程序只是模拟,
无法实现多线程,程序运行的时候仍然只有主线程在运行,
这是因为我所制作的ThreadMy类中无法实现在底层开辟控制单元的方法
*/
interface RunnableMy//这是定义一个接口,确定规则制定run方法中执行语句的位置
{
 public void run();
}
class ThreadMy implements RunnableMy
/*
相当于Thread类,他继承了上面的接口,
因为他的run函数中的执行语句位置也是固定的
*/
{
 private RunnableMy rm;
 ThreadMy(){}
 ThreadMy(RunnableMy rm)//构造函数初始化
 {
  this.rm=rm;
 }
 public void run()//这里的RUN方法和接口中的不是同一个,他是在调用接口引用来的run方法
 {
  if (rm!=null)
   rm.run();
 }
 public void start()//定义start方法调用本类中的run方法
 {
  run();
 }
}
class Test implements RunnableMy//我们真正要实现多线程的执行语句所在的类
{
 private int x=100000;
 public void run()
 {
  while (x>0)
  {
   if (x%2==0)
    System.out.println(Thread.currentThread().getName()+x--+"是偶数");
   else
    System.out.println(Thread.currentThread().getName()+x--+"是奇数");
   
  }
  
 }
}
class ThreadMyDemo
{
 public static void main(String[] args)
 {
  Test t=new Test();//创建一个需要多线程操作的类的对象
  ThreadMy tm1=new ThreadMy(t);//因为多线程实现了接口,其实这里的t也是被接口引用的
  ThreadMy tm2=new ThreadMy(t);//Runnable rm=new Test()里面的t是这个含义
  tm1.start();
  tm2.start();

 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值