java 简单线程_java多线程简单用法

1、实现多线程-匿名内部类

public class Test{

public static void main(String[] args){

new Thred(new Runnable(){

@Override

public void run(){

System.out.println("hello word");

}

}).start();

}

}

2、实现多线程-使用lamda

public class Test{

public static void main(String[] args){

new Thred(()->System.out.println("Hello Word!")).start();

}

}

在实际开发过程中,Runnable接口的子类的实现形式可能很少见,以上两种是最为常见的做法。

Runnable中的run方法虽然也是线程的主方法,但是其没有返回值,因为它的设计遵循了主方法的设计原则:线程开始了就别回头。

但是很多时候需要一些返回值,例如:当某些线程执行完成后有可能带来一些结果,这种情况下我们只能利用Callable来拿到返回值。

不管何种情况,要想启动多线程只有Thread类的start()方法

public class Test implements Callable{

@Override

public String call() throws exception{

for(int i=0;i<20;i++){

System.out.println(i);

}

return "票卖完了,下次吧。。。";

}

publlic static void main(String[] args){

FutureTask task = new FutureTask();

new Thred(task).start();

System.out.println(task.get());

}

}

什么是进程?

实际上每当使用了java命令去解释程序的时候,都表示启动了一个新的JVM进程。而主方法知识这个进程上的一个线程而已。

JVM是一个进程,所有的主方法都是一个线程,由主线程创建所有的子线程

线程休眠

主方法只是一个中等优先级

线程死锁:

死锁一旦出现之后实际整个程序就将暂时性中断执行了,所以死锁属于一个严重性的问题,而这个出现的概率不高。

那么在整体的感念理念:数据若果要想完整操作必须使用同步,但是过多的同步会造成死锁,没事干考虑好了再加同步。

请解释sleep和wait的区别?

1、sleep是Tread类中定义的方法,到了一定时间后休眠的线程可以自动唤醒

2、wait()是Object类中定义的方法,如果想要唤醒,必须使用notify()、notifyAll()方法才可以唤醒。

notify() 唤醒第一个等待线程

notifyAll() 唤醒所有等待的线程,哪个优先级高,他就有可能先执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值