Java学习----day8——(2)多线程入门篇

针对于自己先前所接触的知识,谈一谈自己对于Thread线程的理解;
很常见的一个小项目,Socket套接字编程,我们想要做一个即时聊天室,每个用户对应每个线程,我们在未使用线程的情况下,只能将两个单独用户参加聊天。
(网上资料也是太多,还是自己总结吧)
一篇很靠谱的线程博客


以上思路有问题,看完多线程直接写个socket试试;
(开始正文哈)


线程:Thread
教材上非得让我们区分进程(Process)和线程(Thread)的区别,简单的来说,就是线程包含于进程,是进程中更小的执行单位,在进程中允许多个线程运行。


线程的生命周期(同人类)

这里写图片描述

package com.Example.charpter08;

public class ThreadIntroduction {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Demo_one().run();
        new Demo_two().run();
        new Demo_one().run();
        new Demo_two().run();     
        new Demo_one().run();
        new Demo_two().run();
    }

}
class Demo_one extends Thread{
     @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("这个线程类是通过继承的方法获取");
    }
}
class Demo_two implements Runnable{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("这个是通过Runnable接口实现");        
    }

}

今天最可恨的就是把接口的承接方式弄错了。

  1. 出生
    Thread thread =new Thread();
    向堆内存中申请空间存储数据。
  2. 就绪
    thread.start();线程处于就绪状态,等待JVM分配内存空间。
  3. 运行
    等待JVM分配内存空间,运行run方法;
    //***********************************************//
    在调用start()方法之前:线程处于新状态中,新状态指有一个Thread对象,但还没有一个真正的线程。

在调用start()方法之后:发生了一系列复杂的事情
启动新的执行线程(具有新的调用栈);
该线程从新状态转移到可运行状态;
当该线程获得机会执行时,其目标run()方法将运行。

注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。
4. 阻塞

  1. 死亡
    死亡比较清楚就是:一旦stop()或者run()执行完毕,就宣布线程死亡;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值