JAVA入门到精通-第38讲-线程-坦克大战6

Posted 夏至稻花如白练,大暑池畔赏红莲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA入门到精通-第38讲-线程-坦克大战6相关的知识,希望对你有一定的参考价值。

 应用程序在内存中开辟空间-进程;
 内存-大脑容量;
  
 反应切换的速度-CPU;
 试图去尝试别的进程的地址空间---病毒;
 
线程是由进程(应用程序)创建的;
涉及到并发,就会涉及到线程;迅雷下载;
 
 
 线程不会跑出到进程外面去的;

 地址空间是由操作系统和JVM决定的;
 32/64位,CPU的寻址空间范围,加载内存的大小;

 线程的调度:
 CPU、内存资源OK?--->Running,运行状态;
 运行过程CPU,内存不够---->Blocked,阻塞状态;
 资源空闲,可用------->Runnable可运行状态;
 最后,退出程序---->Dead死亡;  

 (和人出生,生病,工作,死亡一样的
 
 
 JAVA中任何一个类都可当做线程来使用;

 
没有手动调用,通过start会启动进程;

休眠-blocked状态;
sleep会导致线程进入阻塞状态;释放资源;
 sleep可以定时,做定时器;数据库的清洗;
 Blocked-Runnable-Running不停转;
 转10次以后,自动死亡-times:
 
 退出循环,线程死亡了。
 
 
 JAVA中不允许多继承,Panel类已经继承了JPanel,
 JAVA中的Panel类,通过Runnable接口实现多线程:
 class Dog implements Runnables;
 重写run函数;
 启动的时候先创建线程对象;
 把dog放进去;
 
 ---------------------------------------------
线程--什么是进程
进程--概念
要解释线程,就必须明白什么是进程,就好象要搞清中国历史,就必须要了解春秋战国。
什么是进程呢?
进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击左面的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。
要点:用户每启动一个进程,操作系统就会为该进程分配一个独立的内存空间。

线程--概念
在明白进程后,就比较容易理解线程的概念。
什么是线程呢?
是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。线程有就绪、阻塞和运行三种基本状态。
线程
1、线程是轻量级的进程
2、线程没有独立的地址空间(内存空间)
3、线程是由进程创建的(寄生在进程)
4、一个进程可以拥有多个线程-->这就是我们常说的多线程编程
5、线程有几种状态:
  a、新建状态(new)
  b、就绪状态(Runnable)
  c、运行状态(Running)
  d、阻塞状态(Blocked)
  e、死亡状态(Dead)

线程有什么用处
java程序中流传一句话,不会使用线程就别跟别人说自己学过java。目前绝大部分应用程序都会涉及到多并发的问题。只要应用程序涉及到并发,就离不开多线程编程。

线程--如何使用
在java中一个类要当作线程来使用有两种方法。
1、继承Thread类,并重写run函数
2、实现Runnable接口,并重写run函数
因为java是单继承的,在某些情况下一个类可能已经继承了某个父类,这时在用继承Thread类方法来创建线程显然不可能java设计者们提供了另外一个方式创建线程,就是通过实现Runnable接口来创建线程。

通过继承Thread类来实现建立线程实例[Thread01.java]
 
34
 
1
/**
2
 * 演示如何通过继承Thread来开发线程
3
 */
4
public class Thread01 {
5
    public static void main(String[] args) {
6
        //创建一个 Cat对象
7
        Cat cat=new Cat();
8
        //启动线程
9
        cat.start();//.start()会导致run函数运行
10
    }
11
}
12
13
class Cat extends Thread{
14
    int times=0;
15
    //重写run函数
16
    public void run(){
17
        while(true){
18
            //休眠一秒
19
            //1000表示1000毫秒
20
            try {
21
                Thread.sleep(1000);//sleep就会让该线程进入到Blocked阻塞状态,并释放资源。
22
            } catch (Exception e) {
23
                e.printStackTrace();
24
            }
25
            times++;
26
            System.out.println("hello,world!"+times);
27
            if(times==10){
28
                //退出线程
29
                break;
30
            }
31
        }
32
    }
33
}
34
 
----------------------------------------
通过Runnable接口来实现建立线程实例[Thread02.java]
x
 
1
/**
2
 * 演示如何通过Runnable接口来开发线程
3
 */
4
public class Thread02{
5
    public static void main(String []args){
6
        Dog dog=new Dog();
7
        //创建线程
8
        Thread t=new Thread(dog);
9
        //启动线程
10
        t.start();
11
    }
12
}
13
class Dog implements Runnable{//创建Runnable接口
14
    public void run(){//重写run函数
15
        int times=0;
16
        while(true){
17
            try{
18
                Thread.sleep(1000);
19
            }catch (Exception e) {
20
                e.printStackTrace();
21
            }
22
            times++;
23
            System.out.println("hello,wrold!"+times);
24
            if(times==10){
25
                break;
26
            }
27
        }
28
    }
29
}
30
 




以上是关于JAVA入门到精通-第38讲-线程-坦克大战6的主要内容,如果未能解决你的问题,请参考以下文章

JAVA入门到精通-第48讲-坦克大战12

JAVA入门到精通-第41讲-坦克大战8

JAVA入门到精通-第42讲-坦克大战9

JAVA入门到精通-第47讲-坦克大战11

JAVA入门到精通-第49讲-坦克大战13

JAVA入门到精通-第33讲-绘图技术.坦克大战1