java多线程避免死锁,java多线程避免死锁 java多线程基础

9fab25fcccd5d30ce7e82e2440648996.png

????????本文主要讲java多线程的一些入门知识,包括线程的创建、调度、优先级、等待、休眠、中断及守护线程等...,在讲之前让我们先建立一个“数据字典”以简单了解多线程中出现的一些名词。

??

????????进程:进程是系统进行资源分配和调度的基本单位,是操作系统结构的基础。可以简单的理解为运行中的应用程序。

????????多进程:允许计算机“同时”运行多个进程(应用程序)以提高CPU的利用率。

????????线程:线程是进程中的一个实体,是程序使用CPU的基本单位,也就是说线程是依赖进程而存在的。????????

????????多线程:在一个进程中同时有多个线程并发的执行。多线程可以提高应用程序的使用率。java多线程避免死锁

????????并行:指两个或两个以上事件(或线程)在同一时刻发生,是真正意义上的不同事件或线程在同一时刻,在不同CPU(多核)上同时执行。

????????并发:并发的实质是一个物理CPU(也可以多个物理CPU)在若干道程序(或线程)之间多路复用,并发是对有限物理资源强制行使多用户共享以提高效率。

????????在我们没接触多线程之前,我们所学到的都是有关顺序编程的知识。即程序中的所有事物在任意时刻都只能执行一个步骤。?? ??

??

????????不过java虚拟机(JVM)的启动却是多线程的。在我们每次运行java程序的时候就会有相应的java命令去启动JVM,JVM一启动也就相当于系统启动了一个进程,紧接着该进程就创建了一个主线程用于调用main方法,还创建了一个垃圾回收线程用于回收程序运行中可能出现的垃圾。也就是说JVM的启动至少运行着两个线程。那么我们如何实现自己的线程呢?

??

ef3747848abd8613a3a90891458c3489.png

????????Java给我们提供了两种方式实现多线程,一种是继承Thread类,然后该子类应重写Thread类的run方法。例如,用于输出1 -- 10的线程可以写成:

package com.gk.thread.demo;

public class MyThread extends Thread{

@Override

public void run() {

for (int x=1; x<=10; x++) {

System.out.println(x);

}

}

}

????????然后就可以创建并启动一个线程:

MyThread mt = new MyThread();

mt.start();

????????另一种创建线程的方式是实现Runnable接口:

package com.gk.thread.demo;

public class MyRunnable implements Runnable {

@Override

public void run() {

for (int x=1; x<=10; x++) {

System.out.println(x);

}

}

}

????????再在创建Thread时将Runnable作为参数来传递并启动:

Runnable runnable = new MyRunnable();

Thread th = new Thread(runnable);

th.start();

????????以上两种创建线程的方式都要实现run方法,那么run方法有什么作用呢?原来run方法是用来封装那些要被线程执行的代码的,因为我们的Thread类中可能不止有一个方法,run方法就是用来标记哪些代码将来要被线程执行。不过直接调用run方法也是不起多线程作用的。正如上面示例看到的那样,要启动线程,调用的是Thread类的start方法,然后JVM就会帮我们去调用该线程的run方法。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-76705-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值