Java–多线程–静态代理模式、lambda表达式、线程停止、线程休眠、线程礼让、线程强制执行
静态代理模式
package com.zy.thread;
public class StaticProxy {
public static void main(String[] args) {
new WeddingCompany(new Marrier()).marry();
}
}
interface Marry{
void marry();
}
class Marrier implements Marry{
@Override
public void marry() {
System.out.println("要结婚啦,超开心!!!");
}
}
class WeddingCompany implements Marry{
private Marry marrier;
public WeddingCompany(Marry marrier){
this.marrier = marrier;
}
@Override
public void marry() {
before();
marrier.marry();
after();
}
private void before() {
System.out.println("婚礼之前,布置现场");
}
private void after() {
System.out.println("婚礼之后,收尾款");
}
}
lambda表达式
package com.zy.thread;
public class StudyLambda {
static class LambdaTwoImpl implements Lambda{
@Override
public void lambda() {
System.out.println("学习lambda2表达式λ");
}
}
public static void main(String[] args) {
new LambdaOneImpl().lambda();
new LambdaTwoImpl().lambda();
class LambdaThreeImpl implements Lambda{
@Override
public void lambda() {
System.out.println("学习lambda3表达式λ");
}
}
new LambdaThreeImpl().lambda();
new Lambda(){
@Override
public void lambda() {
System.out.println("学习lambda4表达式λ");
}
}.lambda();
Lambda lambda = ()-> System.out.println("学习lambda5表达式λ");
lambda.lambda();
}
}
interface Lambda{
void lambda();
}
class LambdaOneImpl implements Lambda{
@Override
public void lambda() {
System.out.println("学习lambda表达式λ");
}
}
线程停止
package com.zy.thread;
public class StudyThreadStop implements Runnable {
private boolean flag = true;
@Override
public void run() {
int i=0;
while (flag){
i++;
System.out.println("线程运行---》"+i);
}
}
public void stop(){
this.flag = false;
}
public static void main(String[] args) {
StudyThreadStop threadStop = new StudyThreadStop();
new Thread(threadStop).start();
for (int i = 0; i < 6666278; i++) {
if(i == 6666277){
threadStop.stop();
System.out.println("线程停止---》"+i);
}
}
}
}
线程休眠
package com.zy.thread;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StudyThreadSleep {
public static void tenDown() throws InterruptedException {
int number = 10;
while (true){
System.out.println(number--);
if (number <= 0){
break;
}
Thread.sleep(1000);
}
}
public static void main(String[] args) {
try {
tenDown();
Date startTime = new Date(System.currentTimeMillis());
while (true){
Thread.sleep(1000);
System.out.println(new SimpleDateFormat("HH:mm:ss").format(startTime));
startTime = new Date(System.currentTimeMillis());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
线程礼让
package com.zy.thread;
public class StudyThreadYield {
public static void main(String[] args) {
new Thread(new MyYield(),"a").start();
new Thread(new MyYield(),"b").start();
}
}
class MyYield implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"==>线程开始运行");
Thread.yield();
System.out.println(Thread.currentThread().getName()+"==>线程停止运行");
}
}
线程强制执行
package com.zy.thread;
public class StudyThreadJoin implements Runnable {
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
System.out.println("线程vip来了"+i);
}
}
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new StudyThreadJoin());
thread.start();
for (int i = 0; i < 500; i++) {
if(i == 200){
thread.join();
}
System.out.println("主线程运行"+i);
}
}
}