//继承Thread类,重写run方法,调用start开启线程
//注意:线程开启不一定立即执行,由CPU调度执行
public class Demo01 extends Thread{
//
public void run(){
for (int i = 0; i < 20; i++) {
System.out.println("我在看代码==>"+i);
}
}
//main主线程
public static void main(String[] args) {
//创建一个线程对象
Demo01 demo01 = new Demo01();
//使用start方法调用线程
demo01.start();
// demo01.run();
for (int i = 0; i < 500; i++) {
System.out.println("我是主线程==>"+i);
}
}
}
用多线程下载图片
public class TestThread2 extends Thread{
private String url;
private String name;
public TestThread2(String url,String name){
this.name=name;
this.url=url;
}
Runnable
//创建线程方式2,实现runnable接口,重写run方法
public class TestRunnable implements Runnable {
Thread.sleep 让线程睡眠
public class Race implements Runnable{
private static String winner;
静态代理模式
public class DaoLi {
/*
真实对象和代理对象都要实现同一个接口
代理对象要代理真实角色
代理的好处:代理对象可以左很多真实对象做不了的事情,真实对象可以专注做自己的事情
* */
public static void main(String[] args) {
new Hqgs(new You()).HappyMarry();
new Thread(()-> System.out.println("你好呀")).start();
}
}
//结婚
interface Marry{
void HappyMarry();
}
//我
class You implements Marry{
性能的优先级
//默认优先级都是相同
//设置优先级
TestRunnable testRunnable = new TestRunnable();
Thread t1=new Thread(testRunnable);
ti.setPriority(10); //10是最高 1是最小 优先级高的就先运行
守护线程
线程分为用户线程和守护线程
虚拟机必须保证用户线程执行完毕,但不用等待守护线程执行完毕
.setDeamon
public class TestDeamon {
public static void main(String[] args) {
God god=new God();
You1 you1=new You1();
Thread thread=new Thread(god);
thread.setDaemon(true); //设置成为守护线程
thread.start();
new Thread(you1).start();
}
}
class You1 implements Runnable{