多线程技术概述
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);
}
}
网友评论