多线程技术概述

2021-02-18  本文已影响0人  3d9211e6a2b5

多线程技术概述

Java使用的为抢占式调度。优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性)。

同步与异步

同步:排队执行 , 效率低但是安全.

异步:同时执行 , 效率高但是数据不安全.

Runnable 接口

MyRunnable r = new MyRunnable();

Thread t = new Thread(r);

t.start();

public class MyRunnable implements Runnable{

@override

public void run(){

}

}

//如何获取线程的名称

System.out.println(Thread .currentThread( ).getName());

System.out.println( Thread.currentThread().getName());

Thread t = new Thread(new MyRunnable());

t.setName("");

t.start();

public static void main(String[] args) throws InterruptedException

//线程的中断

//一个线程是一个独立的执行路径,它是否应该结束,应该由其自身决定

Thread t1 = new Thread(new MyRunnable());

t1.start();

for(int i=1;i<=5;i++){

System.out.println(Thread.currentThread().getName()+":"+i);

try {

Thread.sleep( millis: 1000);

}catch (InterruptedException e) {

e.printStackTrace();

}

}

t1.interrupt();

}

static class MyRunnable implements Runnable{

0verride

public void run() {

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

System.out.println(Thread.currentThread().getName()+":"+i);

try {

Thread.sleep( millis: 1000);

} catch (InterruptedException e) {

//e.printStackTrace();

System.out.println("发现了中断标记,我们这个线程自杀");

return;

}

//设为守护线程

t1.setDaemon(true);

//函数式编程 关注方法

Thread t = new Thread(() -> System.out.println("锄禾日当午"));t.start();

Thread t = new Thread(() -> {

system.out.println("锄禾日当午");

});

t.start();

public class Demo2 {

public static void main(String[] args){

print((int x, int y) -> {//括号里写参数 接口不用写直接写接口重写的方法

return x+y;

}, x:100, y: 200);

}

public static void print(MyMath m,int x,int y){

int num = m.sum(x, y);

system.out.println(num);

}

static interface MyMath{

int sum(int x,int y);

}

}

上一篇下一篇

猜你喜欢

热点阅读