java多线程详解

本文介绍了线程、进程、多任务的基本概念,强调了Java中通过Runnable接口和Thread类创建线程,以及使用Callable接口处理有返回值的情况。还讨论了多线程的执行方式和同步机制,如synchronized关键字确保原子性。
摘要由CSDN通过智能技术生成

线程的相关概念
程序:程序是含有指令和数据的文件,也可以说程序是静态代码,被存储在磁盘或者其他的数据存储设备中。
进程:进程是程序执行一次的过程。进程是系统运行程序的单位,因此进程是动态的。当程序运行时就会被系统载入内存,并且启动他的工作。对于完全不相关的程序,在同时执行时,不会做数据的交换,而且可以完全独立运行。
多任务:多任务是在一个系统中可以同时运行多个进程。每个进程都是独立的任务,每个进程都有自己独立的内存。所谓的同时运行进程,其实是操作系统将资源分配给各个进程以后,每个进程在CPU上交替运行。
线程:线程是比进程更小的执行单位。一个进程执行过程可以产生多个线程,形成多条执行路径,提高了运行效率。不同的是,同类的多个线程共享同一块内存,在进行各个线程的切换时开销比进程小很多。
多线程:同时执行一个以上的线程,一个线程的执行不必等到另一个线程执行完成在执行。
 

1. 继承Thread类
Thread 也是实现Runnable接口
管理线程的生命周期
2. 实现Runnable接口
只有一个run方法
3.实现Callable接口
只有一个call方法带有返回值
4. 推荐使用Runnable接口
extends 只能继承一个类 单继承
implements 可以实现多个接口 灵活
 

public class ThreadTest{

    public static void main(String[] args){
        
         RunTest r1 = new RunTest ();
         Thread t2 = new Thread (r1);
         Thread t3 = new Thread (r1);

         t3.start ();
         t2.start ();

         try {
         t3.join ();
         t2.join ();
         } catch (InterruptedException e) {
         throw new RuntimeException (e);
         }

         System.out.println (r1.t);


    }
}

class RunTest implements Runnable{
    int t;
    Object o1 = new Object ();

    @Override
    public void run(){
        // 保证原子性
        synchronized (o1) {
            for(int i = 0; i < 10000; i++){
                t++;
            }
        }
    }
}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值