小程序多线程运行(什么是多线程编程)

知梧 848 2022-10-20

本文目录一览:

关于多线程提高程序执行速率的问题

多线程只有在多处理器系统(比如多核、smp等)上才有可能提高执行速率。在多处理系统上,将要执行的任务分割成多个可并行执行线程,就可以提高执行速率。但是如果任务本身不可并行,比如就是一个有限状态自动机的程序,那就没办法用到多处理机,也不能提高速率。上面说的是并行,不是并发。单处理器上多线程只能并发执行而不是并行,多线程并不能提高纯计算程序的速率。但是对于一般程序中都有i/o操作等,可以将io操作放到一个线程中执行,从而可以在io同时进行其他操作不比等待io完成,这样可以提高速率。不宜创建过多线程,因为线程context switch造成很大的cpu负荷,并且线程占用内存资源。现在的网络服务器为了支持大量并发多不是靠多线程或多进程,而采用其他的技术如异步i/o,i/o multiplexing

关于用java多线程做的一个多人聊天小程序的一个问题——如何实现进程间的通信?

传统的进程间通信的方式有大致如下几种:

(1) 管道(PIPE)

(2) 命名管道(FIFO)

(3) 信号量(Semphore)

(4) 消息队列(MessageQueue)

(5) 共享内存(SharedMemory)

(6) Socket

Java如何支持进程间通信。我们把Java进程理解为JVM进程。很明显,传统的这些大部分技术是无法被我们的应用程序利用了(这些进程间通信都是靠系统调用来实现的)。但是Java也有很多方法可以进行进程间通信的。

除了上面提到的Socket之外,当然首选的IPC可以使用Rmi,或者Corba也可以。另外Java nio的MappedByteBuffer也可以通过内存映射文件来实现进程间通信(共享内存)。

诡异,这个简单的JAVA多线程小程序为什么会死循环?

楼主,这是一个多线程同步问题,我稍微修改了一下程序,仅供参考

PS:四个线程不一定都能抢到CUP时间片,所以有些线程有可能卖不到票。楼主可以多运行几次,会得到不同的运行效果,非常有意思。呵呵。。。

public class TestThread{

public static void main(String[] args){

MyThread mt = new MyThread();

new Thread(mt).start();

new Thread(mt).start();

new Thread(mt).start();

new Thread(mt).start();

}

}

class MyThread extends Thread{

private int t=100;

public void run(){

while(true){

synchronized(this){//因为有多个线程共享属性t,故需要使用到synchronized,进行同步

if(t0) System.out.println(Thread.currentThread().getName()+"卖票"+t--);

else break;//此句是为了防止死循环,当t=0是退出循环

}

}

}

}

一个C#小程序,叫做打字练习,用多线程实现,其中有一段有错~

1楼的线程类是继承Thread类的 而不是实现Runnable接口的 所以在主方法中 没有必要在new Thread(); 占内存

这是一个多线程的程序 只运行1次是看不出来的 以下是修改了下1楼的代码 如果想看明白多线程是怎么输出的 把我引掉的代码打开

public class MyThreadClass { // 入口主类

public static void main(String[] args) {

// for(int i=0;i10;i++){

PrintThread printThread = new PrintThread(); // 打印线程对象

Access_Database access_databaseThread = new Access_Database();

Draw_Picture_On_Screen draw_picture_on_screenThread = new Draw_Picture_On_Screen();

// try {

// Thread.sleep(1000);

// } catch (InterruptedException e) {

// e.printStackTrace();

// }

printThread.start();

access_databaseThread.start();

draw_picture_on_screenThread.start();

// System.out.println();

// }

}

}

class PrintThread extends Thread {

public void run() {

System.out.println("printing_a_file");

}

}

class Access_Database extends Thread {

public void run() {

System.out.println("accessing_database");

}

}

class Draw_Picture_On_Screen extends Thread {

public void run() {

System.out.println("drawing_picture_on_screen");

}

}

另外,虚机团上产品团购,超级便宜

java一个多线程的小程序,为啥他知执行了一次就不执行了,不是会一直并发式执行下去的吗?

public class StartDi implements Runnable{

Sound s;

public StartDi(Sound s){

this.s=s;

}

public void run(){

s.ding();

}

}

public class StartDo implements Runnable{

Sound s;

public StartDo(Sound s){

this.s=s;

}

public void run(){

s.dong();

}

}

这两个子类的run方法都是只执行一次而已啊。

你可以改为

public class StartDi implements Runnable{

Sound s;

public StartDi(Sound s){

this.s=s;

}

public void run(){

while(true){

s.ding();

}

}

}

public class StartDo implements Runnable{

Sound s;

public StartDo(Sound s){

this.s=s;

}

public void run(){

while(true){

s.dong();

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:CERC2012 A - kingdoms 状态压缩dp
下一篇:小程序技术方案(小程序设计方案)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~