package com.ruigege.threadFoundation1;
public class MyThreadExtendsType extends Thread {
@Override
public void run() {
System.out.println("这是一个继承Thread类的多线程表示方法");
}
}
package com.ruigege.threadFoundation1;
public class MyThreadImplementsRunnable implements Runnable{
@Override
public void run() {
System.out.println("这是一个实现Runable接口的多线程");
}
}
package com.ruigege.threadFoundation1;
public class MultiBuildThreadTest {
public static void main(String[] args) {
//使用继承Thread的类的方式来进行多线程创建
MyThreadExtendsType thread1 = new MyThreadExtendsType();
thread1.start();
//使用实现Runnable接口的方式进行多线程创建
Thread thread2 = new Thread(new MyThreadImplementsRunnable());
thread2.start();
}
}
package com.ruigege.threadFoundation1;
import java.util.concurrent.Callable;
public class MyThreadImplementsCallable implements Callable<String> {
@Override
public String call() throws Exception{
System.out.println("使用FutureTask的方式来行创建多线程");
return "创建好了";
}
}
package com.ruigege.threadFoundation1;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class MultiBuildThreadTest {
public static void main(String[] args) throws InterruptedException, ExecutionException{
//使用Callable和FutureTask来创建多线程
FutureTask<String> futurnTask = new FutureTask<>(new MyThreadImplementsCallable());
Thread thread3 = new Thread(futurnTask);
thread3.start();
System.out.println(futurnTask.get());
}
}
执行native方法,pc计数器是undefined地址;执行Java代码的时候才是原定义
synchronized(共享变量){
}
synchronzied void add (int a,int b){
a + b;
}
synchronize(obj){
while(条件不满足){
obj.wait();
}
}
https://github.com/ruigege66/ConcurrentJava
参与评论
手机查看
返回顶部