您的位置:首页 > 财经 > 金融 > 东莞保安公司_公司简介宣传册模板ppt_百度网址怎么输入?_google谷歌搜索引擎入口

东莞保安公司_公司简介宣传册模板ppt_百度网址怎么输入?_google谷歌搜索引擎入口

2024/12/26 13:18:57 来源:https://blog.csdn.net/qq_36324341/article/details/144198362  浏览:    关键词:东莞保安公司_公司简介宣传册模板ppt_百度网址怎么输入?_google谷歌搜索引擎入口
东莞保安公司_公司简介宣传册模板ppt_百度网址怎么输入?_google谷歌搜索引擎入口

第12章 并发

多任务(multiasking):操作系统的一种能力,看起来可以在同一时刻运行多个程序。

并发执行的进程数目不受限于CPU数目,操作系统会为每个进程分配CPU时间片,给人并行感觉。

线程是控制线程的简称,单个程序看起来同时完成多个任务,每个任务在一个线程中执行。

多线程(multithreaded):程序同时运行多个线程。

多进程与多线程有哪些区别?

每个进程都拥有一整套变量,而线程则共享数据。

线程之间通信比进程之间更有效,容易。

线程更轻量,创建和撤销比进程的开销小的多。

《Java并发编程实战》更细

12.1 什么是线程

模拟银行账户之间转账

  • 将执行的任务代码放在实现Runnable接口的类的run方法中。
  • 构造一个Thread对象,new Thread(r)
  • 启动线程,t.start()

注释:可以通过继承Thread实现,但不推荐,应当要把并行任务和运行机制解耦合,多任务创建多个线程开销太大,后续用线程池。

警告:Thread和Runnable都有run方法,启动线程是start,直接调用run只是执行了普通线程。

转账代码

package threads;public class ThreadTest {public static final int DELAY = 10;public static final int STEPS = 100;public static final double MAX_AMOUNT = 1000;public static void main(String[] args) {var bank = new Bank(4, 100000.00);Runnable task1 = ()->{try {for (int i=0;i<STEPS;i++) {double amount = MAX_AMOUNT*Math.random();bank.transfer(0, 1, amount);Thread.sleep((int)(DELAY*Math.random()));}} catch (InterruptedException e) {}};Runnable task2 = ()->{try {for (int i=0;i<STEPS;i++) {double amount = MAX_AMOUNT*Math.random();bank.transfer(2, 3, amount);Thread.sleep((int)(DELAY*Math.random()));}} catch (InterruptedException e) {}};new Thread(task1).start();new Thread(task2).start();}}class Bank {private Integer account;private Double balance;public Bank(Integer account, Double balance) {super();this.account = account;this.balance = balance;}public void transfer(Integer from,Integer to,Double amount) {System.out.println(Thread.currentThread()+" "+ Math.round(amount*100)/100.0 +" from "+from+" to "+to+" Total Balance: "+balance);}public Integer getAccount() {return account;}public void setAccount(Integer account) {this.account = account;}public Double getBalance() {return balance;}public void setBalance(Double balance) {balance = balance;} 
}

结果:

java.lang.Thread 1.0

  • Thread(Runnable target),构造一个新线程,调用指定目标的run()方法。
  • void start(),启动这个线程,从而调用run()方法,方法立即返回,新线程并发运行。
  • void run(),调用相关Runnable的run方法。
  • static void sleep(long millis),休眠指定的毫秒数。

java.lang.Runnable 1.0

  • void run(),必须覆盖这个方法,提供你希望执行的任务指令。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com