How to write uninterruptable blocks of code in the RUN method of a THREAD?
Hello people,
It is better I explain my problem with example code
public class MyThreadClass implements Runnable
//some definitions
public void run()
//some codes
/*HERE I WANT TO WRITE A CODE WHICH WILL BE RUN AS ORDINARILY
FROM BEGINING TO THE END WITOUT ANY INTERRUPT*/
//some codes
Please help, if you can.
Thanks in advance
Tamer
You can't write a block of uninterruptable code in Java.
Similar Messages
-
Hi, folks can some body help me¡ How I can use de second code to the Itunes card to use the Itunes card.... My number is vanished, how i can submit my Itunes card?
iTunes Store: Invalid, inactive, or illegible codes
http://support.apple.com/kb/TS1292 -
How to write strings with an underline on the TOP-OF-PAGE of ALV
How to write strings with an underline on the TOP-OF-PAGE of ALV
if u r using classes and methods it can be done
but if u r using normal fms and then u have to use HTML_TOP_OF_PAGE but the drawback for this it cannot be printed when the report is printed . -
HT5731 How come I cant enter my code in the redeem box
How come I cant enter my code in the redeem box?
Maybe:
iTunes Store: Invalid, inactive, or illegible codes
Next contact iTunes
Apple - Support - iTunes - Contact Us -
How can I kill all Threads of the same class from within the run() method?
Ok
I have a class called Consumer that extends Thread
I have several Consumer threans running... but, when a certain condition is true (within the run() method) in ANY of the threads, I want to kill ALL the threads of that object.
is this possible?I know this is gonna be too demanding, but can someone please tell me why my Consumer's run() method never reaches the System.out.println( "ALL CONSUMING DONE") line
Create a multi-threaded prime number calculator that is based on the producer-consumer model
using semaphores. Your program should be able to check for prime numbers in a range specified
by the user and with a variable number of threads. Example:
$ java PrimeFind 3 5000 10000
should use 1 producer and 2 consumers (3 threads in total, obviously the minimum is 2) to find all
the prime numbers in the range [5000,10000].
The producer should: use a buffer to store candidate numbers that have to be checked for
primality.
Consumers should: read from the buffer, check if a number is prime and update the status of the
program accordingly (e.g. show the number on the screen, or save it to a file)
import java.util.concurrent.Semaphore;
import java.io.*;
public class Assign1 {
static int fromThisNumber;
static int toThisNumber;
static int numberOfThreads;
static int buffer[];
static Semaphore ready; /*This semaphore is used by the Producer to signal
an "OK" to the consumers*/
static Semaphore critical; /*This is a Mutex semaphore. It allows only 1 consumer
to enter his critical section.
static Semaphore counter; /*This semaphore acts as a counter.
Instead of having a global variable
incremented each time, we just release()
this semephore when we find a prime number
Because remember that release() increments permits
static Producer prod;
static Consumer cons[];
static int in=0;
static int out=0;
static PrintWriter outFile;
public static void main (String args[]){
try{
outFile=new PrintWriter(new FileWriter("primes.txt"));
}catch(Exception e){}
numberOfThreads=Integer.parseInt(args[0]);
fromThisNumber=Integer.parseInt(args[1]);
toThisNumber=Integer.parseInt(args[2]);
buffer=new int[Integer.parseInt(args[2])-Integer.parseInt(args[1])+1];
ready=new Semaphore(0,false); /*We initialise it to 0 because we wait
for the Producer to produce atleast a
item. Suppose ready was 1 and if
Consumer ran first he would be in an
empty buffer */
critical=new Semaphore (1,false);/*We initialise it to 1 because when
the first Consumer thread tries
to enter its critical section, it
should be allowed to;
Subsequent threads will have to
wait since only 1 thread can
access its critical section at a time*/
counter=new Semaphore(0,false); // duh!
cons=new Consumer[numberOfThreads-1]; /*numberOfThreads-1 because 1 thread
is taken by the Producer*/
//Creating Producer object
prod=new Producer();
//Creating the Consumer object and start the thread.
for(int i=0;i<cons.length;i++)
cons=new Consumer();
cons[i].start();
prod.start();
//Printing to screen and file
/* for(int i=0;i<buffer.length;i++)
if(buffer[i]!=0)
System.out.println(buffer[i]);
outFile.println(buffer[i]);
System.out.println("Total primes found between "+args[1]+" and "+toThisNumber+": "+counter.availablePermits()+"\n primes.txt written");
outFile.println("Total primes found between "+args[1]+" and "+toThisNumber+": "+counter.availablePermits());
outFile.close();*/
static class Producer extends Thread {
public void run(){try{
while(in<buffer.length) /*'in' should always be more than 'out'.Oherwise the consumer will try to access an empty index*/
{ System.out.println("producing");
buffer[in]=fromThisNumber;
in++;
fromThisNumber++;
ready.release();
catch (Exception e){e.printStackTrace();}
System.out.println("ALL PRODUCING DONE");
static class Consumer extends Thread {
int tempout=0;
public void run(){try{
System.out.println("before while"+this.getId());
while(tempout<=in)
System.out.println("before ready"+this.getId()+" "+ready.availablePermits()+" "+in);
ready.acquire();
System.out.println("before critical.acquire"+this.getId());
critical.acquire();
tempout=out;
out++;
critical.release();
if(!isPrime(buffer[tempout]))
{System.out.println(buffer[tempout]+" by "+this.getId());buffer[tempout]=0;}
else {counter.release();System.out.println("prime added: "+buffer[tempout]+" by "+this.getId());}
critical.acquire();
tempout=out;
System.out.println("tempout:"+tempout+" of "+this.getId());
critical.release();
System.out.println("ALL CONSUMING DONE"+this.getId());
catch(Exception e){e.printStackTrace();}
//Prime number-checking method
public boolean isPrime(int n){
for(int i=2;i<=(n/2);i++)
if(n%i==0)
return false;
return true;
======================
import java.util.concurrent.Semaphore;
import java.io.*;
/* 3 questions to ask Barlas
* Why error if I start the Consumer threads before Producer
* Why does the counter semaphore always give a +1 result at the end
* Is there a way I can verify that all the work is not being done by only 1 consumer thread? In other words, the workload is being shared properly
* if I put ready.acquire() outside or inside the while loop, its not making any difference, why?
* Strangely, its not making any difference if I playing with the release() and aquire() of the semaphores, WHY?!?!
public class Assign1 {
static int fromThisNumber;
static int toThisNumber;
static int numberOfThreads;
static int buffer[];
static Semaphore ready; /*This semaphore is used by the Producer to signal
an "OK" to the consumers*/
static Semaphore critical; /*This is a Mutex semaphore. It allows only 1 consumer
to enter his critical section.
static Semaphore counter; /*This semaphore acts as a counter.
Instead of having a global variable
incremented each time, we just release()
this semephore when we find a prime number
Because remember that release() increments permits
static Producer prod;
static Consumer cons[];
static int in=0;
static int out=0;
static PrintWriter outFile;
public static void main (String args[]){
try{
outFile=new PrintWriter(new FileWriter("primes.txt"));
}catch(Exception e){}
numberOfThreads=Integer.parseInt(args[0]);
fromThisNumber=Integer.parseInt(args[1]);
toThisNumber=Integer.parseInt(args[2]);
buffer=new int[Integer.parseInt(args[2])-Integer.parseInt(args[1])+1];
ready=new Semaphore(0,false); /*We initialise it to 0 because we wait
for the Producer to produce atleast a
item. Suppose ready was 1 and if
Consumer ran first he would be in an
empty buffer */
critical=new Semaphore (1,false);/*We initialise it to 1 because when
the first Consumer thread tries
to enter its critical section, it
should be allowed to;
Subsequent threads will have to
wait since only 1 thread can
access its critical section at a time*/
counter=new Semaphore(0,false); // duh!
cons=new Consumer[numberOfThreads-1]; /*numberOfThreads-1 because 1 thread
is taken by the Producer*/
//Creating Producer object
prod=new Producer();
//Creating the Consumer object and start the thread.
for(int i=0;i<cons.length;i++)
cons[i]=new Consumer();
cons[i].start();
prod.start();
//Printing to screen and file
/* for(int i=0;i<buffer.length;i++)
if(buffer[i]!=0)
System.out.println(buffer[i]);
outFile.println(buffer[i]);
System.out.println("Total primes found between "+args[1]+" and "+toThisNumber+": "+counter.availablePermits()+"\n primes.txt written");
outFile.println("Total primes found between "+args[1]+" and "+toThisNumber+": "+counter.availablePermits());
outFile.close();*/
static class Producer extends Thread {
public void run(){try{
while(in<buffer.length) /*'in' should always be more than 'out'.Oherwise the consumer will try to access an empty index*/
{ System.out.println("producing");
buffer[in]=fromThisNumber;
in++;
fromThisNumber++;
ready.release();
catch (Exception e){e.printStackTrace();}
System.out.println("ALL PRODUCING DONE");
static class Consumer extends Thread {
int tempout=0;
public void run(){try{
System.out.println("before while"+this.getId());
while(tempout<=in)
System.out.println("before ready"+this.getId()+" "+ready.availablePermits()+" "+in);
ready.acquire();
System.out.println("before critical.acquire"+this.getId());
critical.acquire();
tempout=out;
out++;
critical.release();
if(!isPrime(buffer[tempout]))
{System.out.println(buffer[tempout]+" by "+this.getId());buffer[tempout]=0;}
else {counter.release();System.out.println("prime added: "+buffer[tempout]+" by "+this.getId());}
critical.acquire();
tempout=out;
System.out.println("tempout:"+tempout+" of "+this.getId());
critical.release();
System.out.println("ALL CONSUMING DONE"+this.getId());
catch(Exception e){e.printStackTrace();}
//Prime number-checking method
public boolean isPrime(int n){
for(int i=2;i<=(n/2);i++)
if(n%i==0)
return false;
return true;
===========================
BTW, when I tried to change extends Thread to implements Runnable I got some kinda of error.
Actually, my program is pretty complete... its just that something if messed up in my Consumer's run() method's while loop... I think
I know guys its crazy to ask ya'll to look at so much code, but.... I'd really appreciate it. This assignment is killing me, been at it since 10 hours now.... -
How to encrypt column of some table with the single method on oracle7/814?
How to encrypt column of some table with the single method on oracle7/814?
How to encrypt column of some table with the single method on oracle7/814?
-
How to encrypt column of some table with the single method ?
How to encrypt column of some table with the single method ?
How to encrypt column of some table with the single
method ?How to encrypt column of some table with the single
method ?
using dbms_crypto package
Assumption: TE is a user in oracle 10g
we have a table need encrypt a column, this column SYSDBA can not look at, it's credit card number.
tha table is
SQL> desc TE.temp_sales
Name Null? Type
CUST_CREDIT_ID NOT NULL NUMBER
CARD_TYPE VARCHAR2(10)
CARD_NUMBER NUMBER
EXPIRY_DATE DATE
CUST_ID NUMBER
1. grant execute on dbms_crypto to te;
2. Create a table with a encrypted columns
SQL> CREATE TABLE te.customer_credit_info(
2 cust_credit_id number
3 CONSTRAINT pk_te_cust_cred PRIMARY KEY
4 USING INDEX TABLESPACE indx
5 enable validate,
6 card_type varchar2(10)
7 constraint te_cust_cred_type_chk check ( upper(card_type) in ('DINERS','AMEX','VISA','MC') ),
8 card_number blob,
9 expiry_date date,
10 cust_id number
11 constraint fk_te_cust_credit_to_cust references te.customer(cust_id) deferrable
12 )
13 storage (initial 50k next 50k pctincrease 0 minextents 1 maxextents 50)
14 tablespace userdata_Lm;
Table created.
SQL> CREATE SEQUENCE te.customers_cred_info_id
2 START WITH 1
3 INCREMENT BY 1
4 NOCACHE
5 NOCYCLE;
Sequence created.
Note: Credit card number is blob data type. It will be encrypted.
3. Loading data encrypt the credit card number
truncate table TE.customer_credit_info;
DECLARE
input_string VARCHAR2(16) := '';
raw_input RAW(128) := UTL_RAW.CAST_TO_RAW(CONVERT(input_string,'AL32UTF8','US7ASCII'));
key_string VARCHAR2(8) := 'AsDf!2#4';
raw_key RAW(128) := UTL_RAW.CAST_TO_RAW(CONVERT(key_string,'AL32UTF8','US7ASCII'));
encrypted_raw RAW(2048);
encrypted_string VARCHAR2(2048);
BEGIN
for cred_record in (select upper(CREDIT_CARD) as CREDIT_CARD,
CREDIT_CARD_EXP_DATE,
to_char(CREDIT_CARD_NUMBER) as CREDIT_CARD_NUMBER,
CUST_ID
from TE.temp_sales) loop
dbms_output.put_line('type:' || cred_record.credit_card || 'exp_date:' || cred_record.CREDIT_CARD_EXP_DATE);
dbms_output.put_line('number:' || cred_record.CREDIT_CARD_NUMBER);
input_string := cred_record.CREDIT_CARD_NUMBER;
raw_input := UTL_RAW.CAST_TO_RAW(CONVERT(input_string,'AL32UTF8','US7ASCII'));
dbms_output.put_line('> Input String: ' || CONVERT(UTL_RAW.CAST_TO_VARCHAR2(raw_input),'US7ASCII','AL32UTF8'));
encrypted_raw := dbms_crypto.Encrypt(
src => raw_input,
typ => DBMS_CRYPTO.DES_CBC_PKCS5,
key => raw_key);
encrypted_string := rawtohex(UTL_RAW.CAST_TO_RAW(encrypted_raw)) ;
dbms_output.put_line('> Encrypted hex value : ' || encrypted_string );
insert into TE.customer_credit_info values
(TE.customers_cred_info_id.nextval,
cred_record.credit_card,
encrypted_raw,
cred_record.CREDIT_CARD_EXP_DATE,
cred_record.CUST_ID);
end loop;
commit;
end;
4. Check credit card number script
DECLARE
input_string VARCHAR2(16) := '';
raw_input RAW(128) := UTL_RAW.CAST_TO_RAW(CONVERT(input_string,'AL32UTF8','US7ASCII'));
key_string VARCHAR2(8) := 'AsDf!2#4';
raw_key RAW(128) := UTL_RAW.CAST_TO_RAW(CONVERT(key_string,'AL32UTF8','US7ASCII'));
encrypted_raw RAW(2048);
encrypted_string VARCHAR2(2048);
decrypted_raw RAW(2048);
decrypted_string VARCHAR2(2048);
cursor cursor_cust_cred is select CUST_CREDIT_ID, CARD_TYPE, CARD_NUMBER, EXPIRY_DATE, CUST_ID
from TE.customer_credit_info order by CUST_CREDIT_ID;
v_id customer_credit_info.CUST_CREDIT_ID%type;
v_type customer_credit_info.CARD_TYPE%type;
v_EXPIRY_DATE customer_credit_info.EXPIRY_DATE%type;
v_CUST_ID customer_credit_info.CUST_ID%type;
BEGIN
dbms_output.put_line('ID Type Number Expiry_date cust_id');
dbms_output.put_line('-----------------------------------------------------');
open cursor_cust_cred;
loop
fetch cursor_cust_cred into v_id, v_type, encrypted_raw, v_expiry_date, v_cust_id;
exit when cursor_cust_cred%notfound;
decrypted_raw := dbms_crypto.Decrypt(
src => encrypted_raw,
typ => DBMS_CRYPTO.DES_CBC_PKCS5,
key => raw_key);
decrypted_string := CONVERT(UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw),'US7ASCII','AL32UTF8');
dbms_output.put_line(V_ID ||' ' ||
V_TYPE ||' ' ||
decrypted_string || ' ' ||
v_EXPIRY_DATE || ' ' ||
v_CUST_ID);
end loop;
close cursor_cust_cred;
commit;
end;
/ -
How do you call a java class from the main method in another class?
Hi all,
How do you call a java class from the main() method in another class? Assuming the two class are in the same package.
Thanks
SI
Edited by: okun on May 16, 2010 8:40 PM
Edited by: okun on May 16, 2010 8:41 PM
Edited by: okun on May 16, 2010 8:47 PMgeorgemc wrote:
To answer your impending question, either the method you're calling has to be static, or you need an instance of that other class to invoke it against. Prefer the latterAnd to your impending question after that: no, don't use the Singleton pattern. -
Report execute time nd how many records will be returned before hitting the "run" option?
Post Author: Prasad15
CA Forum: WebIntelligence Reporting
Is there any way to know how long the report executes and how many records will be returned before hitting the "run" option?
Regards
PrasadTo know if the report is going to return more than 10,000 records, you first have to run the query with a 'select count(1) from ... where ...' (with the same from and where clauses as you normal query). Since this takes about the same time as runnng your report, I wonder if you really gain anything (although formatting may take some time too).
You may simplify the select count(1) query by omitting all the lookup tables that are only needed for formatting. That way your query may run a lot faster. You can put this in your after parameter form trigger. -
How to execute a custom java code from the process
Hi All,
I'm writing a process to generate the PDF and it works fine. Now, at the end or in the middle of the process, i would like to execute/write a java code then it will be invoked when the process running. Assume not using web service, is there another way? samples how to write custom code?
Thanks,The Execute Script service allows you to execute java code on a particular step.
A more robust solution would be to create a custom component for your custom code.
Jasmin -
How to write a application using WDJ with the adobe form ?
Hi, experts,
I don't know how to write a application using !!webdynpro for java!! with the adobe form so that I can fill data to the adobe form and get data from the adobe form.
Note: I have configed the ADS(adobe document services),and I can create a application with a interactiveform in webdynpro for abap and run it successfully, so that I can fill data to the adobe form and get data from the adobe form.
Do you give me some hint?
Thanks a lot.
Best regards,
tao
Edited by: wang tao on Sep 9, 2008 8:59 AMHi,
Refers the following links.
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/4fd2d690-0201-0010-de83-b4fa0c93e1a9
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5f27e290-0201-0010-ff82-c21557572da1
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/70c9a954-aa20-2a10-64bb-ea0835204e03
Thanks
Abhilasha. -
How to find all ORA error code and the message in Oracle10g?
Does anyone knows how to list all ORA error code and message in SQL Plus or find a full list of ORA error code in documentation?
If you want ALL Oracle ORA error codes in single page or even downloadable (html or pdf format) then check following post.
http://www.oratraining.com/blog/2010/08/complete-list-of-all-oracle-ora-errors/
Regards,
Tushar
Edited by: oratraining on Aug 18, 2010 12:20 AM -
How to write a Query a table and the return result is the column name
Hi All
Pls advise how to write a query whereas the return result is the
column name.
I know there is describe <table_name>;
Is there any other ways?
Pls advise
Tj
Edited by: user600866 on Oct 14, 2008 12:13 AMData Dictionary table user_tab_columns has all the column names. You can query that and get what ever you want.
To get the column list of a table just query
select *
from user_tab_columns
where table_name = <your_table>Edited by: Karthick_Arp on Oct 14, 2008 12:18 AM -
How to Find unused programs / T-codes for the past three months
How to find the unused programs / transaction codes for the past three months,
I tried with the ST03 Transaction but it gives only the Tcodes, program used in last one monthu2026
Regards,
PurshothThis depends on the data retention time (in days) maintained in your system. In ST03, on the right hand side, check "Collector" tab, under that "Performance Database" and then "Reorganization" which will give you the details retention times (in days).
Also please check the link http://inet.tamko.com:8081/saphelp/helpdata/EN/c4/3a68d5505211d189550000e829fbbd/frameset.htm for more details.
Thank You. -
How to maintain Import Processing: Control Code for the country India
Hi Gurus,
I need to maintain the Control Processing: Control Code for the country India in SPRO configuration.
Please tell me the path to maintain it.
Thanks,
Thiyaguspro@Logistics - General@Material Master@Material IDs@Maintain PKWiUs
Regards,
Indranil
Maybe you are looking for
-
I have an Ipad 2. My wife has an Ipad mini. When we plug in to Itunes (at different times) it synchs the apps from one Ipad on to the other. We don't want this. I have uncheked the box for Automatically synch apps, but it still does this. How do I ge
-
Importing .xls error in new 1.2 update
I keep getting errors when trying to import .xls into numbers from iPad mail. Anyone else getting this?
-
Line number not displaying on Flex Alert Message
Hi All, I am facing one problem as absence of line numbers on Alert message(stack trace in Actionscrip 3.0) I am using Flex 3.0 & applied all setting required to deploy SWF file in debugger mode as below: WEB-INF\flex\flex-config.xml <debug>true</deb
-
Hi All, I am using oracle 10.2. i am new to procedures. i created procedure. That procedure created with some errors. i got message as Warning: Procedure created with compilation errors. i want to know where is the error. so i want to compile it. whe
-
Dont sync big file (iPhoto Library)
I sync to iCloud Drive by iPhoto Library. After reinstall OS i can't sync it to my Macbook Pro 13". All another files success sync. I try to download it from iCloud.com, but iCloud Drive get error.