1.继承Thread类,重写run方法,用state开起线程
2.实行接口Runnable,重写run方法,将Runnable实现类放入Thread类,state开启线程
注意:
线程使用可以调用的state是由cup调动,同时进行没有先后之分,利用run方法则根据程序的先后顺序进行执行。
public class Threadtest extends Thread{
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("我在看代码--");
}
}
public static void main(String[] args) {
Threadtest threadtest = new Threadtest();
threadtest.run(); //调用线程
threadtest.start(); //调用线程,由cpu调度交替执行
for (int i = 0; i < 20; i++) {
System.out.println("我在写代码--");
}
}
}
//线程实现方法2,实现Runnable接口,重写run()方法,并将runnable接口丢入Thread方法
public class Threadtest2 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("代码实现--");
}
}
public static void main(String[] args) {
Threadtest2 threadtest2 = new Threadtest2();
new Thread(threadtest2).start(); //下两行的简写
// Thread thread = new Thread(threadtest2);
// thread.start(); //开启线程,由cpu调度同时开始执行
for (int i = 0; i < 20; i++) {
System.out.println("线程开起");
}
}
}
静态代理
1.需要实体类与代理类共同实现同一个接口
2.由代理类去帮助实体类去进行一些操作
package 多线程;
//结婚由婚庆公司代理
public class 静态代理 {
public static void main(String[] args) {
// Wedding wedding = new Wedding(new You());
// wedding.HaapyMarry(); //只是调用婚庆公司
new Wedding(new You()).HaapyMarry();
}
}
interface Marry{
void HaapyMarry();//接口方法
}
//真实的结婚对象
class You implements Marry{
@Override
public void HaapyMarry() {
System.out.println("我要在结婚了!");
}
}
//帮助你结婚的对象
class Wedding implements Marry{
//确定帮助的结婚对象
private Marry target; //是由的结婚对象
//利用构造函数去传递私有参数参数
public Wedding(Marry target) {
this.target = target;
}
@Override
public void HaapyMarry() {
weddingstate();
this.target.HaapyMarry(); //代理对象
weddingend();
}
private void weddingend() {
System.out.println("结婚结束");
}
private void weddingstate() {
System.out.println("结婚之前");
}
}