Java第十二天学习笔记~包、多线程

面向对象-----------包

概述

  • 对类文件进行分类管理
  • 给类提供多层命名空间
  • 写在程序文件的第一行
  • 类名的全称是   包名.类名
  • 包也是一种封装形式
class DemoA
{
	public void show()
	{
		System.out.println("demoa show run");
	}
}
package mypack;
class PackageDemo
{
	public static void main(String[] args)
	{
		packa.DemoA d=new packa.DemoA();
		d.show();
		System.out.println("hellow package");
	}
}

包与包之间的访问

  public portected default private
同一类中 ok ok ok ok
同一包中 ok ok ok  
子类中 ok ok    
不同包中 ok      

导入import

import packa.DemoAA;  导入了packa包中的DemoA类

import packa.DemoA;

import packa.*;//导入了packa包中所有的类

import packa.abc.*;导入了packa\abc包中所有的类

导包原则:用到哪个类就导入哪个类

Jar包

java的压缩包

                           多线程

概述

进程:正在进行中的程序

线程:就是进程中一个负责程序执行的控制单元(执行路径)

一个进程中可以多执行路径,称之为多线程

一个进程中至少要有一个线程

扫描二维码关注公众号,回复: 4665267 查看本文章

开启多个线程是为了同时运行多部分代码

每一个线程都有自己运行的内容,这个内容可以称之为线程要执行的任务

//多线程
class Demo extends Object
{
	public void finalize()
	{
		System.out.println("demo ok");
	}
}
class ThreadDemo
{
	public static void main(String[] args)
	{
		new Demo();
		new Demo();
		new Demo();
		System.gc();
		System.out.println("Hello World!");
	}
}

好处与弊端

好处:解决了多部分同时运行的问题

弊端:线程太多会导致效率的降低

JVM的多线程解析

其实程序的执行都是CPU在做着快速的切换完成的,这个切换是随机的

JVM启动时就启动了多个线程,至少有两个线程可以分析出来

1,执行main函数的线程

             该线程的任务代码都定义在main函数中

2,负责垃圾回收的线程

主线程运行示例

class Demo
{
	private String name;
	Demo(String name)
	{
		this.name=name;
	}
	public void show()
	{
		for(int x=0;x<10;x++)
		{
			System.out.println(name+"......x="+x);
		}
	}
}
class ThreadDemo2
{
	public static void main(String[] args)
	{
		Demo d1=new Demo("旺财");
		Demo d2=new Demo("xiaoqiang");
		d1.show();
		d2.show();
	}
}

Thread类中的方法&线程名称

如何创建一个线程?

创建线程方式一:继承Thread类

步骤:

  1. 定义一个类继承Thread类
  2. 覆盖Thread类中的run方法
  3. 直接创建Thread的子类对象创建线程
  4. 调用start方法开启线程并调用线程的任务run方法执行

可以通过Thread的getName获取线程名称  Thread-编号(从零开始)

主线程的名字就是main

class Demo extends Thread
{
	private String name;
	Demo(String name)
	{
		super(name);
		//this.name=name;
	}
	public void run()
	{
		for(int x=0;x<10;x++)
		{
			System.out.println(name+"......x="+x+".....name"+Thread.currentThread().getName());
		}
	}
}
class ThreadDemo2
{
	public static void main(String[] args)
	{
		Demo d1=new Demo("旺财");
		Demo d2=new Demo("xiaoqiang");
		d1.start();
		d2.start();
		System.out.println("over....."+Thread.currentThread().getName());
	}
}

猜你喜欢

转载自blog.csdn.net/crazyhulu/article/details/84792063