1、多线程两种实现:Thread ,Runnable,实际开发中Runnable用较多
2.Runnable优势有,其是接口,可以继承多个接口,但是只可以继承一个类
3.Runnable可以实现资源共享
注:在JDK的安装路径下,src.zip是全部的java源程序,通过此代码找到Thread中的start()方法的定义,可以发现此方法中使用了private native void start0();其中native关键字表示可以调用操作系统的底层函数,那么这样的技术成为JNI技术(java Native Interface)
java中的多线程
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。
多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理“。
多线程优缺点
优点:
(1) 用户界面可以在进行其它工作的同时CPU一直处于活动状态,可以让程序运行速度更快。
(2)占用大量处理时间的任务可以定期将处理器时间让给其它任务,可以提高CPU利用率。
使用实例演示多线程好处。
缺点:
(1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。
(2)对线程进行管理要求额外的 CPU开销,线程的使用会给系统带来上下文切换的额外负担。
(3)线程的死锁。即对共享资源加锁实现同步的过程中可能会死锁。
多线程实现方式
1,继承thread
public class Mythread1 extends Thread{
@Override
public void run(){
for (int i=0;i<100;i++){
System.out.println("执行听歌"+i);
}
}
}
public class Mythread2 extends Thread{
@Override
public void start(){
for (int j=0;j<100;j++){
System.out.println("执行游戏"+j);
}
}
}
public class Threadtext1 {
public static void main(String[] args) {
Mythread1 t1=new Mythread1();
Mythread2 t2=new Mythread2();
t1.start();
t2.start();
}
}
2 , 实现Runnable
public class MyRunnable1 implements Runnable{
@Override
public void run() {
for (int i=0;i<100;i++){
System.out.println("执行听歌"+i);
}
}
}
public class MyRunnable2 implements Runnable {
@Override
public void run() {
for (int j=0;j<100;j++){
System.out.println("执行游戏"+j);
}
}
}
public class Threadtext2 {
/**
* Runnable接口实现类实现多线程的步骤:
* 1.定义类实现Rdhnable接口:
* 2.重写run方法;
* 3.在main方法中实例化Runnable接口的实现类对象;
* 4.定义两个线程Thread类的对象,把Runnable接口的实现对象传入构造方法中;
* 10 5.线程类对象调用start方法,启动线程,自动执行Runnable接口的实现类中的run方法;
*/
public static void main(String[] args) {
MyRunnable1 r1=new MyRunnable1();
MyRunnable2 r2=new MyRunnable2();
//Runnable接口的实现实现多线程,必须借助Thread类才能实现
Thread t1=new Thread(r1);
Thread t2=new Thread(r2);